sobrecarga del operador de asignación omitida / no sucede
Estoy tratando de crear una biblioteca para algún trabajo y estoy usando la sobrecarga del operador para la operación de asignación. Se supone que X e Y son dos instancias de la clase que se ha sobrecargado por lo tanto:
A& A::operator=(A &rhs)
{
A::assign(*this, rhs);
return *this;
}
Cuando hago esto:
A z;
z = x + y; // x and y are other instances of class A
in embargo, todo está bien cuando hago un
A p = q + r;
La rutina sobrecargada no recibe llamadas. No tengo mucha experiencia con la sobrecarga de operadores, alguien puede explicar lo que está sucediendo. Una explicación podría ser que p es solo un alias para q + r objeto creado ya, sin embargo, z crea una nueva instancia de clase A y, por lo tanto, la sobrecarga del operador se activa cuando se asigna z. Algo así como
#include <iostream>
using namespace std;
class X
{
public:
X();
};
X::X()
{
cout<<"called"<<endl;
}
int main(int argc, char *argv[])
{
X e; X f;
X g = e;
}
where se llama solo se imprime dos veces, una vez para e y f, y no se imprime para g.
Si ese es el caso, ¿alguien puede sugerir una forma de activar la sobrecarga del operador para p.
Gracias