, .)? " />
Grundlegendes zum Überladen von Mitgliedszugriffsoperatoren
Während das Überladen von Operatoren im Allgemeinen unkompliziert ist, ist das Verständnis der Mitgliedszugriffsoperatoren ->, ., -> usw. können verwirrend sein. Dieser Artikel befasst sich mit ihrem differenzierten Verhalten und gibt Antworten auf häufige Fragen Fragen.
Übergebene Argumente und zurückgegebene Werte
Die Operator->-Funktion akzeptiert keine Argumente und gibt das Objekt zurück, für das sie aufgerufen wird von einem anderen Operator->-Aufruf verarbeitet werden. Die Operator-*-Funktion übernimmt alle von Ihnen angegebenen Argumente und gibt sie zurück.
Identifizieren von Referenzen Mitglieder
Die Funktion „operator->“ muss das spezifische Mitglied, auf das verwiesen wird, nicht kennen, da sie einfach das enthaltende Objekt zurückgibt. Die nachfolgende Mitgliedersuche verwendet jedoch den Rückgabewert.
Const-Überlegungen
Überladungsoperator-> erfordert eine Nicht-Const-Version Für den Operator-> gibt es keine spezifischen Konstantenüberlegungen. Betreiber. und . können nicht überladen werden.
Beispielcode
Betrachten Sie das folgende Beispiel, das den Operator-> demonstriert:
struct client { int a; }; struct proxy { client *target; client *operator->() const { return target; } }; void f() { client x{3}; proxy y{&x}; std::cout << x.a << y->a; // prints "33" }
Dieser Code zeigt das „Drill-Down“-Verhalten von „Operator->“, bei dem mehrere Operator-> Aufrufe werden miteinander verkettet, um Mitgliedersuchen durchzuführen.
Das obige ist der detaillierte Inhalt vonWie funktioniert das Überladen von Operatoren mit Member-Zugriffsoperatoren (->, .)?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!