🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: de.comp.lang.c++
Article #1805

Re: Rueckgabe v. Referenz auf lokale Variable [[was: Re: Ein paar Frag

#1805
From: Claus A. Faerber
Date: Sun, 10 Mar 1996 00:00
65 lines
2090 bytes
Ruediger Berlich <berlichr@afal23.cern.ch> (10.03.96):

> Hallo,
> - Wenn ich etwa die folgenden (Member-)Funktionen/Klassen
> deklariere/definiere :   (schwachsinnig, ich weiss, soll nur ein Beispiel
> sein)
>
> ===============================================
>
> class matrix
> {
> public:
>  matrix(long, long);
>  matrix(const matrix&);
> ...
>  matrix& giveBackMatrix(void);
>  matrix& operator=(const matrix&);
>  matrix& operator=(double); // Soll Matrix mit dem Argument initialisieren
> private:
> ...
> };
>
> matrix& matrix::giveBackMatrix(void)
> {
> matrix z(*this);
> return z;
> }
>
> main()
> {
> matrix x(3,3),y(3,3);
> x=1.;
> y=0.;
> ...
> y=x.giveBackMatrix();
> }
>
> =============================================
>
>  w"are dann sichergestellt, dass 'z' als lokale Variable lange genug
>  lebt, um operator= auszuf"uhren ?

Nein, die lokale Variable muss geloescht werden, bevor die  
Funktion zurueckkehrt; operator= wird erst nach der  
Rueckkehr aufgerufen.

>  W"urden dann in y also lauter
>  '1.' stehen ? Oder w"are das Ganze undefiniert ?

Ja.

>  Anders ausgedr"uckt, wie kann ich bei der R"uckgabe einer Referenz
>  vermeiden, den R"uckgabewert (z) mit 'new' anlegen zu m"ussen
>  (==> explizites L"oschen notwendig) ?

Lass' doch einfach das '&' beim Rueckgabewert weg, dann wird  
das ganze nicht als Referenz sondern als Kopie (mit new  
angelegt) uebergaben; aber der Compiler kuemmert sich  
implizit um das Loeschen.

Claus

------------------------------------------------------------------------
Claus Andre Faerber - claus@faerber.muc.de - http://www.muc.de/~cfaerber
------------------------------------------------------------------------
Technical Details
Message-ID: <64azsOLocDB@faerber.muc.de>
Path: arc1-ca.pugleaf.net!faerber.muc.de!claus
References: <Do2325.Fwu@news.cern.ch>

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!faerber.muc.de!claus
Date: 10 Mar 1996 00:00:00 +0000
From: claus@faerber.muc.de (Claus A. Faerber)
Newsgroups: de.comp.lang.c++
Message-ID: <64azsOLocDB@faerber.muc.de>
References: <Do2325.Fwu@news.cern.ch>
Subject: Re: Rueckgabe v. Referenz auf lokale Variable [[was: Re: Ein paar Frag
X-Newsreader: CrossPoint v3.1 R/B17071