Avatar ·

Reglas básicas y modismos de la sobrecarga de operadores en C++

¡Hola a todos! Llevo unos seis meses estudiando C++ y tengo confusión con la sobrecarga de operadores. Parece que entiendo la sintaxis, pero constantemente me encuentro con problemas. Por ejemplo, intenté escribir una clase simple Vector2D para vectores bidimensionales con sobrecarga del operador +. Aquí está mi código: ```cpp class Vector2D { public: Vector2D(double x, double y) : x_(x), y_(y) {} Vector2D operator+(const Vector2D& other) { return Vector2D(x_ + other.x_, y_ + other.y_); } // Problema: ¿por qué no puedo escribir 2.0 + v? // ¿O v1 + v2 + v3? private: double x_, y_; }; ``` Cuando intento usar `Vector2D v3 = 2.0 + v1;`, el compilador se queja. Además, no estoy seguro de cómo sobrecargar correctamente los operadores `<<` para la salida con cout, y cuándo devolver una referencia y cuándo un valor. ¿Se puede obtener un resumen de las reglas básicas y modismos para la sobrecarga de operadores? ¿Qué operadores se pueden sobrecargar y cuáles no? ¿Cuándo se necesitan funciones friend? ¿Y cómo hacer que