Heim >Backend-Entwicklung >C++ >Was ist der Unterschied zwischen einfachen und doppelten kaufmännischen Und-Zeichen in C-Member-Funktionsdeklarationen?
Ausführliche Interpretation des kaufmännischen Und-Zeichens in Member-Funktionsdeklarationen
In C können nicht statische Memberfunktionen mit Ref-Qualifizierern dekoriert werden . Diese Qualifizierer geben die Referenzkategorie des impliziten Objektparameters an, der an die Funktion übergeben wird.
Lassen Sie uns die beiden gängigen Ref-Qualifizierer untersuchen:
Ohne Angabe eines Ref-Qualifizierers , die Funktion kann unabhängig von der Wertkategorie des Objekts aufgerufen werden.
Zur Veranschaulichung: Unterschied:
struct Foo { void bar() {} // Default: can be invoked with both lvalues and rvalues void bar1() & {} // Can only be invoked with lvalues void bar2() && {} // Can only be invoked with rvalues };
Im obigen Beispiel:
Hier ist eine Live-Demonstration:
int main() { Foo f; f.bar(); f.bar1(); Foo().bar2(); // Error: bar2 requires an rvalue }
Wenn Sie diese Ref-Qualifizierer verstehen, können Sie den Zugriff auf steuern Ihre Mitgliedsfunktionen basieren auf der Referenzkategorie des Objekts, auf dem sie aufgerufen werden.
Das obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen einfachen und doppelten kaufmännischen Und-Zeichen in C-Member-Funktionsdeklarationen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!