Активный
- Тема Автор
- #1
Перегрузка операторов позволяет использовать операторы с классами.
Базовый пример
Оператор присваивания
Оператор вывода
Важные моменты:
- Перегружайте операторы осмысленно
- Следуйте семантике операторов
- Избегайте неожиданного поведения
- Документируйте перегрузки
Перегрузка операторов упрощает использование классов!
Базовый пример
Код:
#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;
}
Важные моменты:
- Перегружайте операторы осмысленно
- Следуйте семантике операторов
- Избегайте неожиданного поведения
- Документируйте перегрузки
Перегрузка операторов упрощает использование классов!