Перегрузка оператора + в C++

C++C++Beginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном задании вы научитесь демонстрировать концепцию перегрузки оператора + в языке программирования C++. Перегрузка операторов - это особенность языка C++, которая позволяет одному и тому же оператору или символу использоваться с разными значениями в зависимости от контекста его использования. В этом лабораторном задании мы покажем, как сложить два объекта Cuboid с использованием оператора +.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL cpp(("C++")) -.-> cpp/BasicsGroup(["Basics"]) cpp(("C++")) -.-> cpp/FunctionsGroup(["Functions"]) cpp(("C++")) -.-> cpp/OOPGroup(["OOP"]) cpp(("C++")) -.-> cpp/IOandFileHandlingGroup(["I/O and File Handling"]) cpp(("C++")) -.-> cpp/SyntaxandStyleGroup(["Syntax and Style"]) cpp/BasicsGroup -.-> cpp/operators("Operators") cpp/FunctionsGroup -.-> cpp/function_overloading("Function Overloading") cpp/OOPGroup -.-> cpp/classes_objects("Classes/Objects") cpp/OOPGroup -.-> cpp/class_methods("Class Methods") cpp/IOandFileHandlingGroup -.-> cpp/files("Files") cpp/SyntaxandStyleGroup -.-> cpp/code_formatting("Code Formatting") subgraph Lab Skills cpp/operators -.-> lab-96153{{"Перегрузка оператора + в C++"}} cpp/function_overloading -.-> lab-96153{{"Перегрузка оператора + в C++"}} cpp/classes_objects -.-> lab-96153{{"Перегрузка оператора + в C++"}} cpp/class_methods -.-> lab-96153{{"Перегрузка оператора + в C++"}} cpp/files -.-> lab-96153{{"Перегрузка оператора + в C++"}} cpp/code_formatting -.-> lab-96153{{"Перегрузка оператора + в C++"}} end

Создайте новый файл на C++

Создайте новый файл на C++, названный main.cpp, в директории ~/project.

cd ~/project
touch main.cpp

Напишите код для демонстрации перегрузки оператора +

Добавьте следующий код в main.cpp, чтобы создать класс Cuboid, представляющий трехмерный прямоугольный параллелепипед:

#include <iostream>

using namespace std;

// определение класса Cuboid для демонстрации концепции перегрузки оператора Plus в CPP
class Cuboid {
    // объявление переменных-членов класса как public, чтобы получить доступ к ним извне класса
    public:
        double length; // Длина кубоида
        double breadth; // Ширина кубоида
        double height; // Высота кубоида

        public:
        double getVolume(void) {
            return length * breadth * height;
        }
        void setLength(double l) {
            length = l;
        }

        void setBreadth(double b) {
            breadth = b;
        }

        void setHeight(double h) {
            height = h;
        }

        // Перегрузка оператора + для сложения двух объектов Cuboid друг с другом.
        Cuboid operator + (const Cuboid & c) {
            Cuboid cuboid;
            cuboid.length = this -> length + c.length;
            cuboid.breadth = this -> breadth + c.breadth;
            cuboid.height = this -> height + c.height;
            return cuboid;
        }
};

Определите функцию main

Добавьте следующий код в main.cpp, чтобы реализовать функцию main, которая создает три объекта Cuboid, задает их размеры, вычисляет их объемы, складывает два из объектов и выводит размеры и объем результирующего объекта кубоида:

// Определение главного метода для доступа к членам класса
int main() {

    cout << "\n\nДобро пожаловать в LabEx :-)\n\n\n";
    cout << " =====  Программа для демонстрации перегрузки оператора Plus в CPP  ===== \n\n";

    // Объявление объектов класса для доступа к членам класса
    Cuboid c1;
    Cuboid c2;
    Cuboid c3;

    // Для хранения объема кубоида
    double volume = 0.0;

    // Установка длины, ширины и высоты для первого объекта кубоида: c1
    c1.setLength(3.0);
    c1.setBreadth(4.0);
    c1.setHeight(5.0);

    // Установка длины, ширины и высоты для второго объекта кубоида: c2
    c2.setLength(2.0);
    c2.setBreadth(5.0);
    c2.setHeight(8.0);

    // Поиск объема первого кубоида: c1
    cout << "Вызов метода getVolume() для нахождения объема кубоида c1\n";
    volume = c1.getVolume();
    cout << "Объем кубоида c1 равен : " << volume << "\n\n\n";

    // Поиск объема первого кубоида: c1
    cout << "Вызов метода getVolume() для нахождения объема кубоида c2\n";
    volume = c2.getVolume();
    cout << "Объем кубоида c2 равен : " << volume << "\n\n\n";

    // Сложение двух объектов кубоида c1 и c2 для формирования третьего объекта c3:
    c3 = c1 + c2;

    // Вывод размеров третьего кубоида: c3
    cout << "Длина кубоида c3 равна : " << c3.length << endl;
    cout << "Ширина кубоида c3 равна : " << c3.breadth << endl;
    cout << "Высота кубоида c3 равна : " << c3.height << endl;

    // Поиск объема третьего кубоида: c3
    cout << "\n\nВызов метода getVolume() для нахождения объема кубоида c3\n";
    volume = c3.getVolume();
    cout << "Объем кубоида c3 равен : " << volume << endl;
    cout << "\n\n\n";

    return 0;
}

Скомпилируйте и запустите код

Используйте следующую команду для компиляции и запуска кода:

g++ main.cpp -o main && ./main

Вы увидите следующий вывод:

Добро пожаловать в LabEx :-)


 =====  Программа для демонстрации перегрузки оператора Plus в CPP  =====

Вызов метода getVolume() для нахождения объема кубоида c1
Объем кубоида c1 равен : 60



Вызов метода getVolume() для нахождения объема кубоида c2
Объем кубоида c2 равен : 80



Длина кубоида c3 равна : 5
Ширина кубоида c3 равна : 9
Высота кубоида c3 равна : 13


Вызов метода getVolume() для нахождения объема кубоида c3
Объем кубоида c3 равен : 585

Резюме

В этом практическом занятии вы узнали, как продемонстрировать концепцию перегрузки оператора + в языке программирования C++. Перегрузка операторов - это мощный и полезный функционал C++, позволяющий использовать оператор с разными значениями в различных контекстах. Перегружая оператор +, вы можете складывать два объекта Cuboid друг с другом.