Digamos que tenemos esta clase A:¿Cómo uso una cadena de sobrecargas del operador sin modificar los operandos?
class A
{
public:
int a;
A(int b)
{
a = b;
}
};
me gustaría crear una sobrecarga + tales que podía utilizar de esta manera
A a(1),b(2),c(3),&d;
d = a + b + c;
sin modificar el contenido de cada objeto. La siguiente cosa lógica sería la asignación de un nuevo trozo de memoria cada momento como este:
A &operator+ (const A &b)
{
A *c = new A(a+b.a);
return *c;
}
Pero esto crearía un nuevo problema: los resultados intermedios se pierden, causando pérdidas de memoria. Pude haber resuelto fácilmente este problema haciendo una función estática que toma tres referencias de objetos A y almacena la suma de las dos primeras en el tercero, pero estoy dispuesto a apostar que debe haber alguna forma de hacer que ocurra una sobrecarga. camino que quiero
Entonces la pregunta es: ¿hay alguna manera en que yo podría usar una cadena de sobrecargas del operador que no modifique los operandos sin causar pérdidas de memoria?
+1 para evitar la copia manual. – Sven
lo siento, pero su respuesta parece haber ignorado el hecho de que estaba preguntando específicamente sobre una forma de no modificar ninguno de los objetos de operando –
@ user803253: No modifico los * operandos *; los operandos se pasan como valor, lo que significa que lo que modifica en la función son * copias * de los operandos. De todos modos, publiqué un mejor diseño que debes adoptar. – Nawaz