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

Активный
Статус
Сообщения
516
Лайки
32

8

месяц на сайте

Перегрузка операторов позволяет использовать операторы с классами.

Базовый пример
Код:
#include <iostream>
using namespace std;

class Vector {
private:
    int x, y;
    
public:
    Vector(int x = 0, int y = 0) : x(x), y(y) {}
    
    Vector operator+(const Vector& other) {
        return Vector(x + other.x, y + other.y);
    }
    
    void display() {
        cout << "(" << x << ", " << y << ")" << endl;
    }
};

int main() {
    Vector v1(1, 2);
    Vector v2(3, 4);
    Vector v3 = v1 + v2;
    v3.display(); // (4, 6)
    
    return 0;
}

Оператор присваивания
Код:
class Vector {
    Vector& operator=(const Vector& other) {
        if(this != &other) {
            x = other.x;
            y = other.y;
        }
        return *this;
    }
};

Оператор вывода
Код:
friend ostream& operator<<(ostream& os, const Vector& v) {
    os << "(" << v.x << ", " << v.y << ")";
    return os;
}

Важные моменты:
- Перегружайте операторы осмысленно
- Следуйте семантике операторов
- Избегайте неожиданного поведения
- Документируйте перегрузки

Перегрузка операторов упрощает использование классов!
 

1 человек читают эту тему (Всего: 1, Пользователей: 0, Гостей: 1)

Сверху