Heim > Backend-Entwicklung > C++ > Wie bestimmt „auto' den Wert im Vergleich zu den Referenztypen in C 11?

Wie bestimmt „auto' den Wert im Vergleich zu den Referenztypen in C 11?

Susan Sarandon
Freigeben: 2024-11-04 07:53:31
Original
221 Leute haben es durchsucht

How Does

Typdeduktionssemantik von „auto“ in C 11

In C 11 leitet das Schlüsselwort „auto“ den Typ einer Variablen ab der Typ seines Initialisierers. Die Bestimmung, ob „auto“ in einen Wert oder eine Referenz aufgelöst wird, kann jedoch manchmal nicht eindeutig sein.

Wert vs. Referenz

Die Schlüsselregel für die Typableitung mit „auto " bedeutet, dass der abgeleitete Typ dem deklarierten Typ entspricht.

  • Wenn der deklarierte Typ ein Werttyp ist, wird „auto“ in einen Wert aufgelöst.
  • Wenn der deklarierte Typ ist ein Referenztyp, „auto“ wird in eine Referenz aufgelöst.

Beispiele

  • auto i = v.begin(); – Da v.begin() einen Iterator nach Wert zurückgibt, wird „auto“ in einen Wert aufgelöst.
  • const std::shared_ptr& get_foo(); – Der Typ der Funktion ist eine Referenz, daher wird „auto“ in eine Referenz aufgelöst.
  • static std::shared_ptr s_foo; – Der Typ der Variablen ist ein Zeiger, daher wird „auto“ in einen Wert aufgelöst.
  • std::vector> C; - Der Typ des Containers ist ein Vektor von Zeigern, daher wird „auto“ in einen Wert aufgelöst.

Typabzug

Das folgende Beispiel demonstriert dies Typabzugsverhalten:

<code class="cpp">int i = 5;
auto a1 = i;    // value
auto &a2 = i;  // reference</code>
Nach dem Login kopieren

In diesem Beispiel ist „a1“ vom Typ int (Wert), während „a2“ vom Typ int& (Referenz) ist.

Fazit

Das Verständnis der Typableitungssemantik von „auto“ ist entscheidend, um korrekten und effizienten C-Code zu schreiben. Durch die Einhaltung der Regel der „automatischen“ Auflösung in den deklarierten Typ können Entwickler Variablentypen genau ableiten und die Vorteile dieser Funktion nutzen.

Das obige ist der detaillierte Inhalt vonWie bestimmt „auto' den Wert im Vergleich zu den Referenztypen in C 11?. 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