375 Stimmen

Was ist der Unterschied zwischen dem Punktoperator (.) und -> in C++?

Was ist der Unterschied zwischen dem Punktoperator (.) und -> in C++?

15voto

Tamás Szelei Punkte 22099
pSomething->someMember

ist gleichbedeutend mit

(*pSomething).someMember

13voto

Am1rr3zA Punkte 6461

Verwenden Sie -> wenn Sie einen Zeiger haben. Verwenden Sie . wenn Sie eine Struktur (Klasse) haben.

Wenn Sie auf ein Attribut zeigen wollen, das zu einer Struktur gehört, verwenden Sie . :

structure.attribute

Wenn Sie auf ein Attribut verweisen wollen, das über einen Zeiger auf den Speicher verweist, verwenden Sie -> :

pointer->method;

oder dasselbe wie:

(*pointer).method

13voto

ezpz Punkte 11421

Das Ziel. dot funktioniert bei Objekten; arrow funktioniert bei Zeigern auf Objekte.

std::string str("foo");
std::string * pstr = new std::string("foo");

str.size ();
pstr->size ();

4voto

gparent Punkte 909

Beachten Sie, dass der ->-Operator für bestimmte Dinge nicht verwendet werden kann, zum Beispiel für den Zugriff auf operator[].

#include <vector>

int main()
{
   std::vector<int> iVec;
   iVec.push_back(42);
   std::vector<int>* iVecPtr = &iVec;

   //int i = iVecPtr->[0]; // Does not compile
   int i = (*iVecPtr)[0]; // Compiles.
}

2voto

Logan Capaldo Punkte 38523

Es ist ganz einfach: Wann immer Sie

 x->y

wissen, dass es dasselbe ist wie

 (*x).y

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X