Studium, Ausbildung und Beruf
 StudiumHome   FAQFAQ   RegelnRegeln   SuchenSuchen    RegistrierenRegistrieren   LoginLogin

mysteries of C++: der "->"-Operator.
Neues Thema eröffnen   Neue Antwort erstellen
Foren-Übersicht -> Informatik-Forum -> mysteries of C++: der "->"-Operator.
 
Autor Nachricht
ichbinsisyphos
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 31.05.2007
Beiträge: 1700

BeitragVerfasst am: 14 Okt 2009 - 21:58:04    Titel: mysteries of C++: der "->"-Operator.

Wozu ist der gut? Wie kann man sich das vorstellen?

Ist das eine Notlösung oder Standard?

Das ist eines der seltsamen Dinge, die mir immer nur bei Qt4 unterkommen, aber da man mir letztens hier erklärt hat, dass "new" auch völlig normal ist, dachte ich ich frag mal nach.

Wird anscheinend auch bei <time.h> eingesetzt.
just_phil
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 23.08.2008
Beiträge: 1006

BeitragVerfasst am: 14 Okt 2009 - 22:10:16    Titel:

den pfeiloperator verwendet man, wenn man z.b auf ein objektattribut via zeiger zugreift.

a->value ist dasselbe wie (*a).value - tippt und liest sich etwas besser, wie ich finde.
Smutje
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 18.07.2008
Beiträge: 3004
Wohnort: Gießen

BeitragVerfasst am: 14 Okt 2009 - 22:52:31    Titel: Re: mysteries of C++: der "->"-Operator.

ichbinsisyphos hat folgendes geschrieben:
Wozu ist der gut?


Gegenfrage: willst du für jedes Zugreifen auf Felder oder Methoden von Objekten auf dem Heap
Code:
(*objekt).methode
schreiben? Ich glaube, da ist der Pfeil als Abkürzung weit angenehmer. Wink

PS.: Spaßig werden verschachtelte Datenstrukturen -- also z.b. Zugriff auf ein Element einer Klasse, was wieder rum veränderbar ist:

Code:
#include <vector>
using namespace std;

class A
{
private:
  int i;

public:
  A(int j): i(j) { }

  int getI()
  {
    return i;
  }

  void setI(int j)
  {
    i = j;
  }
};

class B
{
private:
  A *a;

public:
  B(): a(new A(0)) { }

  A *getA()
  {
    return a;
  }
};

int main(void)
{
  B *b = new B();
  b->getA()->setI(5);

  // Alternativ:
  (*((*b).getA())).setI(5);
 

  return 0;
}


Da ist
Code:
  b->getA()->setI(5);
weit schöner als
Code:
(*((*b).getA())).setI(5);
ichbinsisyphos
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 31.05.2007
Beiträge: 1700

BeitragVerfasst am: 14 Okt 2009 - 23:04:28    Titel:

Irgendwie versteh ich das noch nicht, ist das ein Weg um auf Attribute/Methoden eines Objekts zuzugreifen, die als Pointer vorliegen?
just_phil
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 23.08.2008
Beiträge: 1006

BeitragVerfasst am: 15 Okt 2009 - 05:53:13    Titel:

so könnte man das sagen, ja. mit dem sternchen dereferenzierst du einen pointer (worauf auch immer) und mit dem punkt-operator greifst du normalerweise auf attribute/methoden zu. und x->content ist eben eine andere schreibweise für (*x).content.
ichbinsisyphos
Senior Member
Benutzer-Profile anzeigen
Senior Member


Anmeldungsdatum: 31.05.2007
Beiträge: 1700

BeitragVerfasst am: 15 Okt 2009 - 16:30:13    Titel:

Alles klar.
Beiträge der letzten Zeit anzeigen:   
Foren-Übersicht -> Informatik-Forum -> mysteries of C++: der "->"-Operator.
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

Chat :: Nachrichten:: Lexikon :: Bücher :: Impressum