Heim > Backend-Entwicklung > C++ > Was bedeutet das einzelne kaufmännische Und (&) in einer C-Member-Funktionsdeklaration?

Was bedeutet das einzelne kaufmännische Und (&) in einer C-Member-Funktionsdeklaration?

Susan Sarandon
Freigeben: 2024-12-15 11:55:09
Original
697 Leute haben es durchsucht

What Does the Single Ampersand (&) Mean in a C   Member Function Declaration?

Verstehen des einzelnen kaufmännischen Und-Zeichens in der Member-Funktionsdeklaration

Im angegebenen Codeausschnitt:

class wrap {
   operator obj() const & { ... }   //Copy from me.
   operator obj() && { ... }  //Move from me.
};
Nach dem Login kopieren

wir stoßen auf zwei Member-Funktionsdeklarationen mit unterschiedlichen Referenzen -Qualifizierer (& und &&). Was bedeutet jedoch das einzelne kaufmännische Und-Zeichen (&)?

Das einzelne kaufmännische Und-Zeichen in einer nicht statischen Member-Funktionsdeklaration zeigt an, dass die Member-Funktion aufgerufen wird, wenn das Objekt eine L-Wert-Referenz ist. Standardmäßig können nicht statische Memberfunktionen sowohl für L-Wert- als auch für R-Wert-Objekte aufgerufen werden. Durch die Angabe von & kann die Funktion jedoch nur L-Werte akzeptieren.

Um den Unterschied zu veranschaulichen:

struct foo
{
   void bar() {}
   void bar1() & {}
   void bar2() && {}
};
Nach dem Login kopieren
  • bar() akzeptiert sowohl L-Werte als auch R-Werte.
  • bar1() erfordert eine L-Wert-Referenz, daher kann es nur für L-Wert-Objekte aufgerufen werden.
  • bar2() erfordert eine R-Wert-Referenz, daher kann sie nur für R-Wert-Objekte aufgerufen werden.

Beispiel:

int main()
{
   foo().bar();  // (always fine)
   foo().bar1(); // doesn't compile because `bar1()` requires an lvalue
   foo().bar2(); // doesn't compile because `bar2()` requires an rvalue

   foo f;
   f.bar();      // (always fine)
   f.bar1();
   f.bar2();     // doesn't compile because `bar2()` requires an rvalue
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas bedeutet das einzelne kaufmännische Und (&) in einer C-Member-Funktionsdeklaration?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage