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

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.

2 Kommentare zu “C++: auto Schlüsselwort”

  1. abc123am 5. December 2012 um 17:16 Uhr

    was ist wcout?

  2. Maximam 5. December 2012 um 17:33 Uhr

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

Trackback URI | Kommentare als RSS

Einen Kommentar schreiben

XHTML: Du kannst folgende Tags verwenden: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <sub> <sup>

Hinweis: Ich behalte mir das Recht vor solche Kommentare, die Beleidigungen oder rechtswidrige Inhalte beinhalten erst nach einer Editierung freizugeben oder kommentarlos zu löschen. Ähnliches gilt auch für Kommentare die offensichtlich nur der Suchmaschinenoptimierung dienen.