Heim > Backend-Entwicklung > C++ > Wann leitet „auto' in C 11 einen Wert gegenüber einer Referenz ab?

Wann leitet „auto' in C 11 einen Wert gegenüber einer Referenz ab?

Patricia Arquette
Freigeben: 2024-11-03 08:40:03
Original
845 Leute haben es durchsucht

When Does

C 11 „auto“-Semantik

In C 11 ermöglicht das „auto“-Schlüsselwort dem Compiler, den Typ von a automatisch abzuleiten Variable. Das Verständnis der Regeln für diesen Abzug ist entscheidend, wenn Sie bestimmen möchten, ob „auto“ zu einem Wert oder einem Referenztyp führt.

Typabzug für Wert und Referenz

Der Primärtyp Der Grundsatz der Typableitung besteht darin, dass der Typ von „auto“ durch die Art und Weise seiner Deklaration bestimmt wird. Zum Beispiel:

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

Im obigen Beispiel wird „a1“ als ganzzahliger Wert abgeleitet, während „a2“ als ganzzahlige Referenz abgeleitet wird.

Beispiele

1. Eine Referenz zurückgeben:

<code class="cpp">const std::shared_ptr<Foo>& get_foo();
auto p = get_foo();</code>
Nach dem Login kopieren

In diesem Fall leitet „auto“ einen Referenztyp ab, weil „get_foo()“ eine konstante Referenz zurückgibt.

2. Statischer Zeiger:

<code class="cpp">static std::shared_ptr<Foo> s_foo;
auto sp = s_foo;</code>
Nach dem Login kopieren

Hier leitet „auto“ einen Werttyp ab, da „s_foo“ ein statischer Zeiger ist, der keine Referenz ist.

3. Durchlaufen eines Zeigercontainers:

<code class="cpp">std::vector<std::shared_ptr<Foo>> c;
for (auto foo : c) {</code>
Nach dem Login kopieren

In dieser Schleife stellt „auto“ sicher, dass „foo“ als gemeinsamer Zeiger auf Foo abgeleitet wird. Jede Iteration erstellt eine Wertkopie des Zeigers.

Schlussfolgerung

Zusammenfassend sind die Typableitungsregeln für „auto“ in C 11 unkompliziert. Wenn der Initialisierungsausdruck ein Wert ist, leitet „auto“ einen Werttyp ab. Wenn der Initialisierungsausdruck eine Referenz ist, leitet „auto“ einen Referenztyp ab. Das Verständnis dieser Regeln ist für die effektive Nutzung von „Auto“ und die Vermeidung unerwarteten Verhaltens unerlässlich.

Das obige ist der detaillierte Inhalt vonWann leitet „auto' in C 11 einen Wert gegenüber einer Referenz ab?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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