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
    zB

    MeinObjekt instance;
    instance.halloWelt();

    wenn du aber auf einen Pointer zugreifst, dann gibt es diese beiden Möglichkeiten
    zB

    MeinObjekt* 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


Anmelden zum Antworten