Article View: de.comp.lang.c++
Article #1518Re: Pointerfrage
From: Nico Josuttis
Date: Mon, 05 Feb 1996 16:04
Date: Mon, 05 Feb 1996 16:04
53 lines
2385 bytes
2385 bytes
In article <Pine.A32.3.91.960205125307.49193A-100000@papin.hrz.uni-marburg.de>,
Saggau Henning <saggauh@uni-marburg.de> wrote:
>Also ich hab da mal ne Frage.
>In dem Buch von Lippman sind Beispiele angegeben, bei denen Jeweils der
>Rueckgabewert eine Referenz ist.
>int& foo::operator[](int i){
>.....
> return Element[1];
>}
>So in diesem Beispiel wird der Wert selber beim return angegeben.
>
>foo& foo::operator=(const foo& f){
>.....
> return *this;
>}
>hier wird der Pointer angegeben.
>
>Wie entscheide ich nun, wenn ich eine Referenz zurueckgeben moechte, ob
>ich den Pointer oder das Element zuueckgebe?
>
>Thanx
>Henning
Sorry Henning, aber Deine Frage klingt so, als haettest Du einiges
noch nicht verstanden.
Ich versuche mal, aufzuklaeren:
1.) *this ist das, worauf der Pointer this zeigt, also das
Objekte, fuer das die Zuweisung aufgerufen wurde.
2.) Element[0] ist auch das, worauf der Pointer (jedes Array
ist als Typ ein Pointer) zeigt (auch: *Element).
Element[1] ist das Element dahinter (auch: *(Element+1)).
Insofern wird in beiden Faellen kein Pointer zurueckgegeben.
Vergiss erstmal Referenzen, denn Referenzen sind vom Typ her nicht
vorhanden und bedeuten lediglich KEINE KOPIE.
Programmier erstmal ohne Referenzen und ueberlege Dir dann, ob
das, was zurueckgeliefert wird im Original oder als Kopie
zurueckgeliefert werden soll. Es muss immer eine Kopie sein,
wenn es etwas Lokales ist (sonst wird etwas zurueckgeliefert, was
es gar nicht mehr gibt).
Und denke bitte bei Referenzen NICHT an Zeiger.
Referenzen sind einfach "zweite Namen", die dazu dienen,
das Anlegen von Kopien zu vermeiden
(siehe auch mein Buch, "Objektorientiertes Programmieren in C++",
Kapitel 3.5).
Tschau
--
Nico address: BREDEX GmbH, Nicolai Josuttis
email: nico@bredex.de Fallersleber-Tor-Wall 23
phone: +49 531 24330-0 D-38100 Braunschweig
fax: +49 531 24330-99 Germany
Technical Details
Message-ID:
<DMB8ns.AC5@bredex.de>Path:
arc1-ca.pugleaf.net!news.braunschweig.pop.de!bredex!nicoReferences:
<Pine.A32.3.91.960205125307.49193A-100000@papin.hrz.uni-marburg.de>Show Full Headers
Complete Article Headers
Newsgroups: de.comp.lang.c++ Path: arc1-ca.pugleaf.net!news.braunschweig.pop.de!bredex!nico From: nico@bredex.de (Nico Josuttis) Subject: Re: Pointerfrage Message-ID: <DMB8ns.AC5@bredex.de> Reply-To: nico@bredex.de Organization: Bredex GmbH References: <Pine.A32.3.91.960205125307.49193A-100000@papin.hrz.uni-marburg.de> Date: Mon, 5 Feb 1996 16:04:39 GMT