Unterschied zwischen * und & (war: Unterschied)
-
Ist bestimmt eine dumme Frage, aber gibt es zwischen
Descriptor_t* Data
und
Descriptor_t& Data
einen Unterschied? Descriptor_t ist in einem struct definiert!
Edit:
Bitte aussagekräftige Überschriften wählen. Danke!
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
C++ Forumbot schrieb:
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum ANSI C verschoben.
Jansen: *räusper* in ANSI-C gibts keine Referenzen, das gehört nach C++.
Sonnenschein: Ja, klar. Das obere ist ein Zeiger, das untere eine Referenz. Dazu steht auch ganz viel in jedem C++-Buch.
-
Siehe
http://tutorial.schornboeck.net/referenzen.htm und Folgende
-
Dieser Thread wurde von Moderator/in Shade Of Mine aus dem Forum ANSI C in das Forum C++ verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
@Sonnenschein,
hier ein paar Links.
c++:
http://www.volkard.de/vcppkold/inhalt.html
http://www.c-plus-plus-archiv.de/tutorials.ca/
http://www.math.uni-wuppertal.de/~axel/skripte/oop/oop_cont.html
http://www.programmersbase.net/Content/Cpp/Default.htm
http://www.ges-training.de/Expertentips/C++-Regeln/cpp_tabelle.htmlbcb:
http://bcb-tutorial.c-plusplus.net/inhalt.html
http://mitglied.lycos.de/b534463/inhalt.htm
http://www.bytesandmore.de/rad/index.htm
http://www.fachinformatiker-ihk.de/service_docu.htm
http://www.bcbdev.com/faqs.htm
-
Im Prinzip gibts keine Unterschied.
-
'türlich gibts den!
-
nein, es gibt prinzipiell wirklich keinen unterschied,nein wirklich nicht
referenzen sind alias namen für andere objekte(ganz grob ausgedrückt),und belegen deshalb im gegesatz zu zeigern keinen Speicherplatz.
zeiger zeigen auf den speicherbereich den ein objekt belegt, und können eine ganze ecke mehr.
usw usf
-
es ist sogar möglich Referenzen als Zeiger zu missbrauchen:
int bla& = *new bla; ... delete &bla;
Ist aber nicht zu empfehlen ^^
-
mis wieso is das nich zu empfehlen? ich hab hier nen fall, wo das meiner meinung nach sehr nützlich ist,ich lass mich aber auch gerne vom gegenteil überzeugen
class bla{ public: virtual void do_sth()=0; virtual void operator=(int)=0; }; class blub:public bla{ public: void do_sth(){ //mach was } void operator=(int i){ //mach was } }; int main(int argc, char* argv[]) { //normal bla* a=new blub; a->do_sth(); a->operator =(1);//was war der sinn der operator überladung?achja stimmt ja, übersichtlichkeit,ich vergaß^^ (*a)=1//autsch das tut ja schon beim hinschaun weh delete a; //alternativ bla &a=*new blub; a.do_sth(); a=1;//angenehm delete &a; return 0; }
-
Hi,
brrr, nein, das ist nicht zu empfehlen und zwar einfach deswegen, weil man der Referenz nicht ansieht, dass sie als Zeiger missbraucht wurde und man daher nicht automatisch drauf bedacht ist das Teil zu löschen.
Wenn du wegen sowas wie (*a) = 1 gleich so eine unsichere Lösung vorziehst,...Nagut, jedenfalls kannst du dir ja mal auto_ptr anschauen.
MfG MAV
-
//normal bla* a=new blub; a->do_sth(); *a = 1;//was war der sinn der operator überladung?achja stimmt ja, übersichtlichkeit,ich vergaß^^ // (*a)=1//autsch das tut ja schon beim hinschaun weh delete a;
wie du hier sehen kannst braucht man auch keine klammern
http://www.c-plusplus.net/forum/viewtopic.php?t=39479
-
@Gerard:
Aber schau mal ganz unten, da wird logische Oder als:
||
dargestellt.
Komisch ist nur, wenn ich das hier so hinschreibe, zeigt er mir auch || an, aber in den FaQ sieht das ausgeschrieben aus.MfG MAV