Введение в операторы в C++
Оператор в классе - это обычный метод, только
его имя задают через ключевое слово operator
и знак из выражения: плюс, минус, равенство и другие.
Тело метода пишут так же, как у любого другого метода.
Снаружи выражение с двумя объектами выглядит привычно:
между ними стоит знак, а компилятор подставляет вызов
метода на левом операнде. Запишем класс Vec
с полями x и y и оператор сложения,
который возвращает новый вектор:
class Vec {
public:
int x = 0;
int y = 0;
Vec operator+(const Vec& other) {
Vec result;
result.x = x + other.x;
result.y = y + other.y;
return result;
}
};
Сейчас создадим два объекта и сложим их:
int main() {
Vec a;
a.x = 1;
a.y = 2;
Vec b;
b.x = 3;
b.y = 4;
Vec sum = a + b;
std::cout << sum.x << " " << sum.y << "\n";
return 0;
}
Исходные объекты a и b не меняются -
метод создает и возвращает отдельный Vec.
Так же устроены многие операции над встроенными типами.