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 objetosComplex
.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ística | Kotlin | C++ |
---|---|---|
Definición de operador | operator fun plus(other: Complex) | Complex operator+(const Complex&) |
Palabra clave | operator | operator forma parte del nombre |
Nombre del método | Predefinido (e.g., plus para + ) | operator+ , operator- , etc. |
Expresividad | Similar a las funciones regulares | Funciones miembro o amigas |
Uso en código | val result = obj1 + obj2 | Complex result = obj1 + obj2; |