Skip to main content

cpp

⏱ Dedicación recomendada: 0 minutos
Esto considera el contenido visible y relevante, e ignora texto colapsado o marcado como opcional.


C++

En C++, la sobrecarga de operadores es una característica poderosa que permite a los programadores definir o redefinir el comportamiento de operadores para tipos de datos definidos por el usuario. Esto permite que los objetos se manipulen utilizando notación matemática estándar, mejorando la legibilidad y usabilidad del código.

Sobrecarga de Operadores en C++

Para sobrecargar un operador en C++, se define una función miembro o una función amiga con una firma específica. Por ejemplo, para sobrecargar el operador +, se puede hacer lo siguiente:

class Complex {
public:
double real;
double imaginary;

Complex(double r, double i) : real(r), imaginary(i) {}

Complex operator+(const Complex& other) const {
return Complex(real + other.real, imaginary + other.imaginary);
}

friend std::ostream& operator<<(std::ostream& os, const Complex& c) {
os << "(" << c.real << ", " << c.imaginary << ")";
return os;
}
};

En este código:

  • operator+: Es una función miembro que sobrecarga el operador +, permitiendo sumar dos objetos Complex.
  • operator<<: Es una función amiga que sobrecarga el operador de inserción en flujo << para facilitar la impresión del objeto.
<< y friend

La palabra clave friend permite que una función no miembro de la clase acceda a los miembros privados y protegidos de dicha clase. En este ejemplo, operator<< es una función amiga que permite usar std::cout para imprimir objetos Complex, accediendo directamente a sus atributos.

Uso en C++

Podemos utilizar los operadores sobrecargados de manera intuitiva:

#include <iostream>

int main() {
Complex number1(1.0, 2.0);
Complex number2(3.0, 4.0);
Complex sumResult = number1 + number2;
std::cout << "Suma: " << sumResult << std::endl;
return 0;
}

La salida será:

Suma: (4.0, 6.0)

Comparación

CaracterísticaKotlinC++
Definición de operadoroperator fun plus(other: Complex)Complex operator+(const Complex&)
Palabra claveoperatoroperator forma parte del nombre
Nombre del métodoPredefinido (e.g., plus para +)operator+, operator-, etc.
ExpresividadSimilar a las funciones regularesFunciones miembro o amigas
Uso en códigoval result = obj1 + obj2Complex result = obj1 + obj2;