138 Stimmen

Was kann ich statt des Pfeiloperators `->` verwenden?

Wofür steht der Pfeiloperator (->) als Synonym?

3voto

Tryb Ghost Punkte 379

-> wird verwendet, um auf Daten zuzugreifen, auf die du einen Zeiger hast.

Zum Beispiel könntest du einen Zeiger ptr auf eine Variable vom Typ int intVar so erstellen:

int* prt = &intVar;

Dann könntest du eine Funktion, wie z.B. foo, nur verwenden, indem du diesen Zeiger dereferenzierst - um die Funktion auf die Variable aufzurufen, auf die der Zeiger zeigt, anstatt auf den numerischen Wert des Speicherorts dieser Variable:

(*ptr).foo();

Ohne die Klammern hier würde der Compiler dies als *(ptr.foo()) verstehen aufgrund der Operatorpräzedenz, was nicht das ist, was wir wollen.

Eigentlich ist das nur das Gleiche wie:

ptr->foo();

Da das -> diesen Zeiger dereferenziert und somit die Funktion foo() für uns auf der Variable aufruft, auf die der Zeiger zeigt.

Ebenso können wir -> verwenden, um auf ein Element einer Klasse zuzugreifen oder es zu setzen:

myClass* ptr = &myClassMember;
ptr->myClassVar = 2;

-1voto

Zhang Punkte 2460

Sie können -> verwenden, um eine Funktion zu definieren.

auto fun() -> int
{
return 100;
}

Es ist kein Lambda. Es ist wirklich eine Funktion. "->" zeigt den Rückgabetyp der Funktion an.

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