CPP2019SSF03: Unterschied zwischen den Versionen

Aus Verteilte Systeme - Wiki
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „ === Feature: Beispiel-Feature === * Eingeführt in: * Deprecated seit: * Nicht mehr im Standard seit: === Syntax === === Use Cases === === Motivation f…“)
 
Zeile 1: Zeile 1:
  
=== Feature: Beispiel-Feature ===
+
=== Feature: auto ===
  
* Eingeführt in:
+
* Eingeführt in: C++ 11
  
* Deprecated seit:
+
* Deprecated seit: -
  
* Nicht mehr im Standard seit:
+
* Nicht mehr im Standard seit: -
  
 
=== Syntax ===
 
=== Syntax ===
 +
auto
  
 
=== Use Cases ===
 
=== Use Cases ===
 +
Das Keyword auto gibt an, dass der Typ der Variable automatisch deklaiert wird abhängig von dessen Initializers. So können zum Beispiel lange Initalisierungslisten beim Erstellen von Iteratoren für Container vermieden werden. Wenn eine Funktion des Rückgabewert auto hat, wird dessen Typ erst während der Laufzeit ausgewertet. Besonders bei Client-Server-Anwendungen muss so bei einem veränderten Rückgabewert nur eine Seite angepasst werden.
  
 
=== Motivation für die Einführung ===
 
=== Motivation für die Einführung ===
 +
Vor C++ 11 musste jeder Datentyp beim Kompilieren explizit deklariert sein. Damit waren die Werte eines Ausdrucks zur Laufzeit begrenzt. Mit der Einführung neuer Keywords kann die Typbestimmung nun dem Compiler überlassen werden. Zwar erhöht das die Kompilierzeit leicht, aber beeinflusst nicht die Geschwindigkeit des Programms.
  
 
=== Vorherige Lösungsansätze ===
 
=== Vorherige Lösungsansätze ===
 +
Vorher musste der explizite Typ immer deklariert werden. Um lange Typen wiederholt zu vermeiden kann man typedef benutzen.
  
 
=== Warnhinweise ===
 
=== Warnhinweise ===
 +
Infaltionäre Benutzung von auto kann Code unleserlicher machen und dazu führen, dass Code vielleicht syntaktisch korrekt ist, aber einen Runtime-Fehler hat.
 +
 +
Eine Variable, die mit auto deklariert wird, kopiert einen Wert, selbst wenn ihr eine Referenz zugewiesen wird. Um wirklich eine Referenz zu bekommen wird auto& benutzt.
  
 
=== Code-Beispiele ===
 
=== Code-Beispiele ===
 +
<nowiki>int main(){
 +
            auto a = 1, b = 2;      //int a,b
 +
            auto c = a + b;        //int c
 +
            auto ptr = &a;          //int* a
 +
            return 0;
 +
}</nowiki>
 +
 +
<nowiki>
 +
int& foo() {}              //gibt int& zurück
 +
auto m = foo();            //int m
 +
auto& n = foo();            //int& n
 +
</nowiki>

Version vom 11. Juni 2019, 12:57 Uhr

Feature: auto

  • Eingeführt in: C++ 11
  • Deprecated seit: -
  • Nicht mehr im Standard seit: -

Syntax

auto

Use Cases

Das Keyword auto gibt an, dass der Typ der Variable automatisch deklaiert wird abhängig von dessen Initializers. So können zum Beispiel lange Initalisierungslisten beim Erstellen von Iteratoren für Container vermieden werden. Wenn eine Funktion des Rückgabewert auto hat, wird dessen Typ erst während der Laufzeit ausgewertet. Besonders bei Client-Server-Anwendungen muss so bei einem veränderten Rückgabewert nur eine Seite angepasst werden.

Motivation für die Einführung

Vor C++ 11 musste jeder Datentyp beim Kompilieren explizit deklariert sein. Damit waren die Werte eines Ausdrucks zur Laufzeit begrenzt. Mit der Einführung neuer Keywords kann die Typbestimmung nun dem Compiler überlassen werden. Zwar erhöht das die Kompilierzeit leicht, aber beeinflusst nicht die Geschwindigkeit des Programms.

Vorherige Lösungsansätze

Vorher musste der explizite Typ immer deklariert werden. Um lange Typen wiederholt zu vermeiden kann man typedef benutzen.

Warnhinweise

Infaltionäre Benutzung von auto kann Code unleserlicher machen und dazu führen, dass Code vielleicht syntaktisch korrekt ist, aber einen Runtime-Fehler hat.

Eine Variable, die mit auto deklariert wird, kopiert einen Wert, selbst wenn ihr eine Referenz zugewiesen wird. Um wirklich eine Referenz zu bekommen wird auto& benutzt.

Code-Beispiele

int main(){
             auto a = 1, b = 2;      //int a,b
             auto c = a + b;         //int c
             auto ptr = &a;          //int* a
             return 0;
}
int& foo() {}               //gibt int& zurück
auto m = foo();             //int m
auto& n = foo();            //int& n