Article View: es.comp.lenguajes.c++
Article #76Re: retornar referencia a objeto asignado dinamicamente
From: Bartomeu
Date: Thu, 22 Jan 2009 12:14
Date: Thu, 22 Jan 2009 12:14
60 lines
2939 bytes
2939 bytes
No ser� destruido. Todo lo que se crea con new tiene que destruirse con
delete. Nunca he hecho delete de una referencia, pero supongo que se podr�
hacer: delete &myImg.
De todas maneras en tu c�digo tienes un error:
donde pone:
ili::IntImg myImg = imComp.synchronize(imgToSynchro);
deber�a poner (fijate en el &)
ili::IntImg &myImg = imComp.synchronize(imgToSynchro);
Para finalizar. Seria mucho m�s ortodoxo pasar un puntero y seria igual de
r�pido:
------ Comienzo c�digo -------
li::IntImg
*RectangleImageComparator::synchronize(const ili::IntImg &pImage)
{
return new ili::IntImg(pImage);
}
// en otra fct har�a esto:
ili::IntImg *myImg = imComp.synchronize(imgToSynchro);
...
// al final de la otra fct, , para destruirlo
delete myImg;
------- Fin c�digo
<mundacho@gmail.com> escribi� en el mensaje
news:17b78dc8-cdbc-42c8-b477-455c3d1e7459@y1g2000pra.googlegroups.com...
Hola,
Tengo entendido que si mi funci�n retorna una referencia a un objeto
el objeto no es copiado (con el copy control), sino pasado
directamente, es decir, m�s r�pido. Por esto quiero hacer algo
parecido a lo mostrado el fragmento de c�digo de abajo (que compila).
Mi pregunta es si cuando hago la asignaci�n en la funci�n que llama
(en este caso a synchronize) al final de la funci�n llamante myImg
ser�a destruido correctamente, a pesar de que fue creado con un new
inicialmente?
Gracias de antemano,
eD
------ Comienzo c�digo -------
li::IntImg
&RectangleImageComparator::synchronize(const ili::IntImg &pImage)
{
ili::IntImg *tempObj = new ili::IntImg(pImage);
return *tempObj;
}
// en otra fct har�a esto:
ili::IntImg myImg = imComp.synchronize(imgToSynchro);
...
// al final de la otra fct, myImg ser�a destruido correctamente???
------- Fin c�digo
Technical Details
Message-ID:
<6tr68oFc4cp1U1@mid.individual.net>Path:
arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mailReferences:
<17b78dc8-cdbc-42c8-b477-455c3d1e7459@y1g2000pra.googlegroups.com>Show Full Headers
Complete Article Headers
X-Google-Thread: f53ec,69e681a920cf2e39 X-Google-Attributes: gidf53ec,domainid0,public,usenet X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!news4.google.com!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: "Bartomeu" <este@micorreono.es> Newsgroups: es.comp.lenguajes.c++ Subject: Re: retornar referencia a objeto asignado dinamicamente Date: Thu, 22 Jan 2009 13:14:13 +0100 Lines: 61 Message-ID: <6tr68oFc4cp1U1@mid.individual.net> References: <17b78dc8-cdbc-42c8-b477-455c3d1e7459@y1g2000pra.googlegroups.com> Mime-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=original Content-Transfer-Encoding: 8bit X-Trace: individual.net 8OtmmTAM3EOUkPlZdpFe5QWVKmigmJufJn7iVINMJPZx+VgmJh Cancel-Lock: sha1:smntfQ93dOgsysEE4PwjbHLED5w= X-Priority: 3 X-MSMail-Priority: Normal X-Newsreader: Microsoft Outlook Express 6.00.2900.5512 X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.5579 X-Antivirus: avast! (VPS 090121-0, 21/01/2009), Outbound message X-Antivirus-Status: Clean