Untersuchung der Rolle des einzelnen kaufmännischen Und-Zeichens in Parametern von Mitgliedsfunktionen
In der C-Programmierung umfasst die Syntax von Mitgliedsfunktionen häufig die Verwendung von kaufmännischen Und-Zeichen Symbole (&) als Ref-Qualifizierer für nicht statische Memberfunktionen. Diese Symbole können das Verhalten des Funktionsaufrufs basierend auf der Wertkategorie des Objekts beeinflussen, das zum Aufrufen verwendet wird. In diesem Artikel geht es um die Bedeutung der Verwendung eines einzelnen kaufmännischen Und-Zeichens (&) in diesem Zusammenhang.
Konkret bedeutet das Vorhandensein eines einzelnen kaufmännischen Und-Zeichens & nach der Parameterliste einer Mitgliedsfunktionsdeklaration, dass die Funktion wann aufgerufen wird Das Objekt ist eine L-Wert-Referenz oder ein reguläres Nicht-Referenzobjekt. Dadurch kann die Funktion direkt über den Namen des Objekts oder über eine L-Wert-Referenz aufgerufen werden. Zum Beispiel:
class wrap { public: operator obj() const & { ... } // Invocable via lvalue reference };
Im Gegensatz dazu zeigt das Fehlen eines Ref-Qualifizierers, d. h. kein kaufmännisches Und in der Deklaration, an, dass die Funktion unabhängig von der Wertkategorie des Objekts aufgerufen werden kann. Dies bedeutet, dass es entweder mit einer L-Wert- oder einer R-Wert-Referenz aufgerufen werden kann.
Um den Unterschied besser zu verstehen, betrachten Sie den folgenden Codeausschnitt:
struct foo { void bar() {} // Function without a ref-qualifier void bar1() & {} // Function with an lvalue reference ref-qualifier void bar2() && {} // Function with an rvalue reference ref-qualifier };
In diesem Beispiel:
Um dieses Verhalten zu veranschaulichen, demonstriert der folgende Code, wie das geht Diese Funktionen können basierend auf der Wertkategorie des Objekts aufgerufen werden:
foo().bar(); // Always fine foo().bar1(); // Doesn't compile because bar1 requires an lvalue foo().bar2(); foo f; f.bar(); // Always fine f.bar1(); f.bar2(); // Doesn't compile because bar2 requires an rvalue
Zusammenfassend lässt sich sagen, dass ein einzelnes kaufmännisches Und vorhanden ist & nach der Parameterliste einer Member-Funktionsdeklaration gibt an, dass die Funktion aufgerufen werden kann, wenn das Objekt eine L-Wert-Referenz ist. Dies bietet eine Möglichkeit, den Aufruf der Funktion basierend auf der Wertkategorie des verwendeten Objekts einzuschränken.
Das obige ist der detaillierte Inhalt vonWas bedeutet ein einzelnes kaufmännisches Und (&) in C-Member-Funktionsparametern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!