[C con Clase] Destrucción automática de objetos temporales

Yan gdotta en telefonica.net
Dom Dic 7 17:52:08 CET 2008


Hola Steven:

tienes toda la razón, me había liado tontamente en las pruebas y me pareció que los objetos temporales anónimos no se destruían automáticamente y a partir de ahí me lie la manta a la cabeza.... así que siento haberos hecho perder el tiempo.

Gracias,
Yan
 
SD> Sinceramente, no veo por qué tienes que instanciar dinámicamente un objeto 
SD> dentro de la función. Bastaría con crear un objeto local y retornarlo. Esto 
SD> sería,
SD> 
SD> claseX operator+( const claseX& operando ) const
SD> {
SD>   claseX temporal(0);  // Instanciamos un nuevo objeto local
SD>   // más sentencias
SD> 
SD>   return temporal;  // Retornamos el objeto local
SD> }
SD> 
SD> Ahora podemos hacer lo siguiente:
SD> 
SD> cout << a+b+c << endl;
SD> 
SD> Obviamente, necesitaríamos sobrecargar el operador << para que funcionara con 
SD> objetos de la clase 'ostream'.
SD> 
SD> De todos modos, estos objetos temporales serán destruidos al finalizar esta 
SD> sentencia.
SD> 
SD> Reitero que deberías rediseñar las funciones para que no usen memoria dinámica 
SD> y simplemente uses objetos locales "regulares". Te evitarías muchos 
SD> quebraderos de cabeza.


Más información sobre la lista de distribución Cconclase