C++: auto Schlüsselwort
Der neue C++ Standard wird viele Neuerungen mit sich bringen und bereits jetzt unterstützen einige Compiler die neuen Konzepte. Eines der kleineren Neuerungen ist das Schlüsselwort auto.
Es steht für einen unbekannten Datentyp, den der Compiler selbst bestimmt. Am einfachsten versteht man es anhand eines Beispiels.
// verschiedene Variablen anlegen auto var1 = 4; auto var2 = 3.14159; auto var3 = "Hallo"; auto var4 = L"Язык программирования"; auto var5 = new double[10]; // Datentyp der Variablen ausgeben wcout << typeid(var1).name() << endl << typeid(var2).name() << endl << typeid(var3).name() << endl << typeid(var4).name() << endl << typeid(var5).name() << endl; // aufräumen nicht vergessen delete var5;
Führt man das Beispiel aus, so bekommt man folgende Bildschirmausgabe zu sehen.

auto Keyword Test
Der Compiler erkennt aus dem Zusammenhang welcher Datentyp gemeint ist und deklariert automatisch eine passende Variable.
Man sollte dieses Konzept nicht mit der dynamischen Datentypzuweisung, wie es sie beispielsweise in PHP gibt, verwechseln. C++ besitzt eine statisch explizite Typisierung, deswegen kann man den Datentyp nach einmaliger Variablendeklaration nicht mehr ändern.
Was in dem ersten Beispiel nach einer Spielerei aussieht, erspart wirklich einiges an Schreibarbeit, wenn die Datentypen etwas komplexer werden.
// Eine Liste mit irgendwelchen Zahlenwerten
list<int> numbers;
for(int i = 0; i < 10; i++)
numbers.push_back(i*i);
// Liste durchlaufen ohne auto
for(list<int>::iterator it = numbers.begin(); it != numbers.end(); it++)
{
cout << *it << " ";
}
// Liste durchlaufen mit auto
for(auto it = numbers.begin(); it != numbers.end(); it++)
{
cout << *it << " ";
}
Man kann sich leicht vorstellen, dass bei noch komplexeren Datentypen (z.B. verschachtelte Maps mit Listen) das auto-Schlüsselwort noch mehr an Bedeutung gewinnt. Vor allem wird auch der Programmcode auch etwas leserlicher.
Für weitere Informationen schaut einfach in die MSDN-Dokumentation rein.
Sehr interessant ist auch die Funktionsweise von decltype im Zusammenspiel mit auto.
- Kategorie: C++ , Programmieren
- Letzte Aktualisierung am: 21. July 2011
- 2 Kommentare


was ist wcout?
std::cout version für unicode. Könntest du aber auch Google fragen ;)