Skip to content

En C++, puedes sobrecargar varios operadores para clases personalizadas. Aquí hay una lista de algunos de los operadores que se pueden sobrecargar y ejemplos de cómo podrían ser implementados:

Operadores Aritméticos:

+, -, *, /, %

cpp
class Complex {
public:
	Complex operator+(const Complex& other) const;
	Complex operator-(const Complex& other) const;
	Complex operator*(const Complex& other) const;
	Complex operator/(const Complex& other) const;
};

Operadores de Comparación:

==, !=, <, >, <=, >=

cpp
class Point {
public:
	bool operator==(const Point& other) const;
	bool operator!=(const Point& other) const;
	bool operator<(const Point& other) const;
	// ...
};

Operadores de Asignación:

=, +=, -=, *=, /=

cpp
class Vector {
public:
	Vector& operator=(const Vector& other);
	Vector& operator+=(const Vector& other);
	// ...
};

Operadores de Incremento/Decremento:

++, -- (pre y postfijo)

cpp
class Counter {
public:
	Counter& operator++();        // Operador de incremento pre-fijo
	Counter operator++(int);      // Operador de incremento post-fijo
	Counter& operator--();        // Operador de decremento pre-fijo
	Counter operator--(int);      // Operador de decremento post-fijo
};

Operadores de Flujo de Entrada/Salida:

<<, >>

cpp
class Point {
public:
	friend std::ostream& operator<<(std::ostream& os, const Point& point);
	friend std::istream& operator>>(std::istream& is, Point& point);
};

Operadores de Subíndice:

[]

cpp
class Array {
public:
	int& operator[](int index);
	const int& operator[](int index) const;
};

Operadores de Función de Conversión:

tipo()

cpp
class Complex {
public:
	operator double() const;  // Conversión a double
};

Operadores de Llamada a Función:

()

cpp
class Functor {
public:
	int operator()(int x, int y) const {
		return x + y;
	}
};

Estos son solo algunos ejemplos, y hay otros operadores que también pueden ser sobrecargados. Es importante notar que la elección de sobrecargar un operador debe hacerse con cuidado para asegurarse de que la semántica de los operadores personalizados sea coherente con las expectativas del usuario.