No lo es. Los objetos temporales existen y el compilador tiene la obligacion de crearlos.
Lo raro sería que un objeto se construyera o destruyera 2 veces.
Es posible jugar con el destructor, pero los codigos aqui vistos no son ejemplo de esto.
Tal vez es mas evidente que existen 2 objetos imprimiendo el valor del puntero this.
Código C++:
Ver original#include <iostream>
using namespace std;
class MiClase {
public: MiClase( const char* s ) {
cout << "Construyo " << s << " -- " << this << endl;
}
public: ~MiClase() {
cout << "Destruyo " << this << endl;
}
};
int main() {
cout << "Antes de construccion" << endl;
MiClase m("[CONSTRUCTOR]");
cout << "Despues de construccion, antes de copia" << endl;
m = "[COPIA]";
cout << "Despues de copia" << endl;
return 0;
}
Ver este ejemplo ejecutandose aqui:
http://goo.gl/BdjA04