AnyCompiler

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;
}
Output
(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.