🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.lenguajes.c++
Article #76

Re: retornar referencia a objeto asignado dinamicamente

#76
From: Bartomeu
Date: Thu, 22 Jan 2009 12:14
60 lines
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-mail
References: <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