<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/3.18.3">
</HEAD>
<BODY>
No sé cómo hacer que los objetos temporales dinámicos devueltos por referencia por algunos métodos se destruyan de forma automática. <BR>
Por ejemplo, tengo una claseX con un operador suma sobrecargado que devuelve por referencia objetos nuevos de la claseX:<BR>
<BR>
class claseX{<BR>
        (... métodos diversos incluyendo destructor de memoria dinámica ...)<BR>
        (... atributos para los que se reserva memoria dinámica ...)<BR>
        claseX& operator+(const claseX& operando) const; <BR>
};<BR>
<BR>
El operador sobrecargado suma lo implemento como sigue:<BR>
<BR>
claseX& operator+(const claseX& operando) const{<BR>
        claseX* temporal = new claseX(0);     //Aqui es donde creo el nuevo objeto<BR>
        (...operaciones para crear la suma y guardarla en temporal...)<BR>
        return *temporal;     //Aqui devuelvo el nuevo objeto<BR>
<BR>
En una función del programa uso objetos de esta clase:<BR>
<BR>
void funcion(){<BR>
        claseX a(1);<BR>
        claseX b(2);<BR>
        claseX c(1);<BR>
        (a + b + c).visualiza(); //Método de ejemplo<BR>
}<BR>
<BR>
Compruebo que los objetos temporales creados en el operador sobrecargado suma (objeto b+c y objeto a+(b+c)) no pasan por el destructor y, por tanto, no liberan memoria.<BR>
<BR>
Por un lado, como las clases creadas tratan de imágenes de gran tamaño interesa minimizar el trasiego de datos y, por otro, me gusta la sintaxis clara y sencilla que se obtiene con operadores sobrecargados que devuelven referencias a los objetos.<BR>
<BR>
He pensado que la clase lleve una lista estática de los objetos temporales que se crean para luego saber que hay que destruirlos, pero, como el programa corre durante tiempos muy largos creando objetos temporales que deberían destruirse al poco, no puedo esperar al final de la ejecución ya que antes de eso se habrá llenado toda la memoria. <BR>
<BR>
Agradecería cualquier sugerencia.<BR>
<BR>
</BODY>
</HTML>