Reglas básicas y modismos de la sobrecarga de operadores en C++
¡Hola a todos! Estoy aprendiendo C++ y tratando de entender la sobrecarga de operadores. Escribí una clase simple para trabajar con números complejos, pero me encontré con un montón de problemas. Aquí está mi código:
```cpp
class Complex {
public:
double real, imag;
Complex(double r, double i) : real(r), imag(i) {}
// Sobrecarga del operador +
Complex operator+(Complex other) {
return Complex(real + other.real, imag + other.imag);
}
// Sobrecarga del operador ==
bool operator==(Complex other) {
return (real == other.real && imag == other.imag);
}
};
int main() {
Complex a(3.0, 4.0);
Complex b(1.0, 2.0);
Complex c = a + b; // Funciona
Complex d = 5.0 + a; // ¡Error! ¿Por qué?
if (c == d) {} // Funciona, pero he oído que esto está mal
return 0;
}
```
Preguntas:
1. ¿Por qué `5.0 + a` no compila, aunque `a + 5.0` funciona?
2. ¿Sobrecargué correctamente `operator+`? ¿Qué es el "modismo de retorno por valor"?
3. ¿Cómo hacerlo correctamente?
No answers yet.
Inicia sesión para dejar una respuesta
Blogs
Programación funcional en Java: de lambdas a Stream API
Documentación avanzada de Swift: generación, autodoc y mejores prácticas
Fechas en TypeScript: cómo declarar el tipo correctamente y no volverse loco
Hablando todos los idiomas: internacionalización de aplicaciones Java