¿La operación en "este" puntero llama al constructor?* esto hace una llamada al constructor?
tengo un constructor definido de la siguiente manera
Cents(int cents)
{
cout<<"in cents constructor\n";
m_cents = cents;
}
friend Cents operator + (const Cents &c1, const Cents &c2)
{
return Cents(c1.m_cents + c2.m_cents);
}
Cents operator ++ (int)
{
cout<<"In c++ function\n";
Cents c(m_cents);
*this = *this + 1 ;
return c;
}
en la función principal que tengo algo como ...
Cents c;
cout<<"Before post incrementing\n";
c++; //This part is calling the constructor thrice
Ahora Si estoy haciendo alguna operación como *this = *this + 1
. Llama a este constructor dos veces.
¿Qué está pasando exactamente aquí? ¿*this
crea un objeto temporal y asigna el valor al objeto original?
Por favor muéstranos más código. ¿Tiene definido el constructor de copias y el operador de asignación? –
@ RafałRawicki .... No, no tengo ningún constructor de copia ni operador de asignación definido. –
¿Podría publicar el ejemplo completo? Ver http://sscce.org Creo que el constructor de Cents debería llamarse una vez en esta expresión, no dos veces. –