Wann wird in C++ mit dem Symbol -> und wann mit Punkt gearbeitet?
-
Hallo,
ich weiß aus Java, dass man auf Membervariablen mit einem Punkt zugreift:
z.B Instanz1.memerbervar; oder Instanz1.memberfunktion();
Aber in C++ wird auch mit dem Symbol "->" gearbeitet und anscheinend mit Punkt
also anscheinend Instanz1->member...
Ist das richtig und wann benutzt man Punnt und wann "->"?
Grüße
-
Hi, wenn du direkt auf ein Objekt zugreifst, dann nimmst du den Punkt
zBMeinObjekt instance;
instance.halloWelt();wenn du aber auf einen Pointer zugreifst, dann gibt es diese beiden Möglichkeiten
zBMeinObjekt* p_instance = new MeinObjekt();
p_instance->halloWelt();
(*p_instance).halloWelt();Beiden sind also gleich.
(*p_instance) ist sozusagen der Pointer auf den du direkt auf das Objekt zugreifen kannst und wird dann halt mit Punkt geschrieben.Ich hoffe es hilft dir ein bißchen.
Gruß, Daniel_S
-
Tom80 schrieb:
Aber in C++ wird auch mit dem Symbol "->" gearbeitet und anscheinend mit Punkt
also anscheinend Instanz1->member...
Ist das richtig und wann benutzt man Punnt und wann "->"?
Der Ausdruck a->b wird, falls a ein Zeiger ist, so behandelt wie (*a).b
Der Unterschied zwischen Java und C++ in dieser Hinsicht ist: In Java werden Objekte immer nur indirekt gehalten. Man erreicht sie über Referenzen und der Punkt-Operator wird auf Referenzen benutzt, um auf Elemente zuzugreifen. In C++ kann man Objekte auch "direkt halten", also ohne Zeiger/Referenz. Der Punkt-Operator wird direkt auf das Objekt angewendet, um auf Elemente zuzugreifen. Hat man nur einen Zeiger auf das Objekt, kann man -> benutzen. So gesehen entspricht also der Java-Punkt-Operator eher dem -> Operator in C++.
Gruß,
SP