Operator Overloading
C++ te permite definir qué significa un operator como + para tu propio type, implementando un method llamado operator+. Esto es genuinamente distintivo comparado con cualquier otro curso de este sitio: Python tiene dunder methods con un propósito similar, pero ningún otro lenguaje aquí deja que un type adopte exactamente la misma sintaxis de operator que usan los types numéricos integrados.
#include <iostream>
using namespace std;
class Point {
public:
int x, y;
Point(int x, int y) : x(x), y(y) {}
Point operator+(const Point& other) const {
return Point(x + other.x, y + other.y);
}
};
int main() {
Point a(1, 2);
Point b(3, 4);
Point c = a + b;
cout << "(" << c.x << ", " << c.y << ")" << endl;
return 0;
}(4, 6)
a + b llama a a.operator+(b) detrás de escena — la sintaxis se lee exactamente como sumar dos números, aunque Point sea un type que tú definiste. La sintaxis : x(x), y(y) en el constructor es una member initializer list, la forma idiomática de establecer los fields de una class de C++ directamente desde los parámetros de su constructor.
Siguiente: templates — el propio mecanismo de C++ en tiempo de compilación para escribir una función o class que funcione con muchos types.
Practice exercise
Define una class Vec2 con int x, y y un constructor. Haz overload de operator+ para que sumar dos Vec2 sume sus componentes. Suma Vec2(2, 3) y Vec2(4, 1), luego imprime el x y el y del resultado separados por un espacio.