[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