Heim >Backend-Entwicklung >C++ >C-Memberfunktionen: Was bedeuten „&' und „&&' in Parameterlisten?

C-Memberfunktionen: Was bedeuten „&' und „&&' in Parameterlisten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-12 17:15:12579Durchsuche

C   Member Functions: What Do `&` and `&&` Mean in Parameter Lists?

Member-Funktionsparameterlisten: Enthüllung des &-Symbols

Beim Deklarieren von Memberfunktionen in C kann es vorkommen, dass nach der Parameterliste die Symbole & und && verwendet werden. Diese als Ref-Qualifizierer bezeichneten Symbole geben den Referenztyp des impliziten Objektparameters an.

Einzelnes kaufmännisches Und (&)

Das einzelne kaufmännische Und (&) bedeutet, dass die Mitgliedsfunktion aufgerufen wird wenn das Objekt eine L-Wert-Referenz ist. Eine L-Wert-Referenz bezieht sich auf ein vorhandenes Objekt, das an einem bestimmten Speicherort gespeichert ist. Der folgende Codeausschnitt demonstriert seine Verwendung:

class wrap {
public:
   operator obj() const & { ... }
   operator obj() && { ... }
private:
   obj data_;
};

Die Operatorfunktion obj() mit dem Ref-Qualifizierer & wird aufgerufen, wenn das Objekt eine L-Wert-Referenz ist. Dies bedeutet, dass es sowohl mit L-Wert- als auch mit R-Wert-Ausdrücken aufgerufen werden kann.

Kein kaufmännisches Und

Wenn kein Ref-Qualifizierer vorhanden ist, wird der implizite Objektparameter als L-Wert-Referenz behandelt. Dadurch kann die Memberfunktion sowohl mit L-Wert- als auch mit R-Wert-Ausdrücken aufgerufen werden. Der folgende Code veranschaulicht dieses Verhalten:

struct foo
{
    void bar() {}
};

int main()
{
    foo().bar(); // (always fine)
    foo f;
    f.bar();      // (always fine)
}

R-Wert-Referenz (&&)

Der Ref-Qualifizierer && gibt an, dass die Mitgliedsfunktion aufgerufen wird, wenn das Objekt eine R-Wert-Referenz ist. Eine R-Wert-Referenz bezieht sich auf ein temporäres oder durch einen Ausdruck ausgewertetes Objekt, das nicht an einen bestimmten Speicherort gebunden werden kann.

Hauptunterschiede

Die folgende Tabelle fasst die Unterschiede zwischen dem einzelnen kaufmännischen Und (&) und zusammen kein kaufmännisches Und:

Ref-Qualifier Reference Type Can be Invoked With
& lvalue reference lvalue and rvalue expressions
None lvalue reference lvalue and rvalue expressions

Das Verständnis dieser Ref-Qualifizierer ist entscheidend für die korrekte Implementierung von Mitgliedsfunktionen und die Anpassung ihres Verhaltens basierend auf Kontext.

Das obige ist der detaillierte Inhalt vonC-Memberfunktionen: Was bedeuten „&' und „&&' in Parameterlisten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn