Zaczniemy od prostszych zmian. Weźmy pod uwagę słowo kluczowe auto.

Umożliwia ono w C++11 tzw. automatyczną dedukcję typu. Oznacza to, że w ściśle określonych sytuacjach, możemy zastąpić konkretny typ słowem kluczowym auto, a kompilator automatycznie określi prawidłowy typ zmiennej.

Skąd będzie wiedział o jaki typ chodzi ? Słowa kluczowego auto można użyć jedynie w sytuacji, w której równocześnie z deklaracją następuje inicjalizacja zmiennej wartością. Kompilator sam jednoznacznie określi, jakiego typu zmienna może być zainicjalizowana tą wartością.

Kilka prostych przykładów:

W pierwszej linii literał liczby całkowitej (4) jest traktowany jako int, natomiast w drugiej linii tworzymy nowy obiekt klasy SomeClass operatorem new – operacja zwraca wskaźnik na obiekt klasy SomeClass, więc taki jest typ inicjalizowanej zmiennej myObject.

Zastosowania.

Kiedy automatyczna dedukcja typów przyda nam się najbardziej ?

Po pierwsze – kiedy typ zmiennej nie jest oczywisty (tzn. trudno z wyrażenia inicjalizującego wywnioskować typ zmiennej).

Po drugie – gdy typ jest na tyle skomplikowany, że sam jego zapis jest dość długi i uciążliwy.

Od razu na myśl przychodzi deklaracja iteratora dla np. kontenera z biblioteki standardowej. Dla starszych wersji języka mamy więc:

Wykorzystując słowo kluczowe auto, kod wygląda następująco:

Myślę, że doskonale widać na tym przykładzie różnicę.

Widać również coś innego. Nowe słowo kluczowe stanowi swojego rodzaju uproszczenie zapisu. Jako takie nie ma wpływu na specyfikację biblioteki standardowej języka C++. Jest to więc po prostu ułatwienie (częto bardzo przydatne) dla programistów.