Większość programistów języka C++ zna doskonale typy wyliczeniowe (enum), zdefiniowane w standardzie C++98/03. Jest to wygodne, często wykorzystywane narzędzie. Jest to jednak również funkcjonalność, która posiada kilka zauważalnych niedociągnięć, przez co użycie typów wyliczeniowych nie jest tak przyjemne i odporne na błędy, jak mogłoby być.
W standardzie C++11 doczekaliśmy się pod tym względem malutkiej rewolucji – zdefiniowane zostały tzw. silne typy wyliczeniowe (ang. strongly-typed enums).
Dzisiejszy temat dotyczy jednego z najbardziej zdumiewających problemów poprzednich standarów języka C++. Dlaczego zdumiewających ? Między innymi dlatego, że udało mu się przetrwać dzielnie kilkanaście lat (!), pomimo swojej nieskomplikowanej natury – chodzi o podwójne nawiasy kątowe.
Standard C++11 zajął się na poważnie jedną z kluczowych kwestii w kontekście języka – oznaczaniem wskaźników pustych (nieważnych). Nowościami są tutaj słowo kluczowe nullptr, oznaczające wskaźnik pusty oraz typ wskaźnika pustego, czyli std::nullptr_t.
nullptr jest literałem, który powinien być używany w kodzie źródłowym i oznacza wskaźnik pusty. Czym różni się on od wartości NULL, która wywodzi się z języka C i była do tej pory stosowana również w C++ ?
Poprzednio rozmawialiśmy o znaczeniu słowa kluczowego auto w C++11. Zakresowa pętla for jest często używana w parze ze słowem auto. Sam pomysł jest rozwinięciem koncepcji zwykłej pętli for o funkcjonalności, które w innych językach programowania są realizowane np. poprzez pętlę foreach.
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.
12 sierpnia 2011 roku komitet standaryzacyjny zaakceptował standard języka C++ o nazwie C++11, który zastąpił wcześniejsze wersje (C++98, C++03).
Nowy standard języka – C++11.
Nowa wersja, wydana po 8 latach od ostatnich zmian (a tak naprawdę po 13 latach – C++03 był jedynie drobną aktualizacją), wprowadziła wiele zmian i nowości, zarówno w samym rdzeniu języka, jak i w jego bibliotece standardowej.
Oczywiście jedno z głównym założeń pozostało niezmienione – nowa wersja języka jest kompatybilna wstecz.
Ta strona korzysta z ciasteczek aby świadczyć usługi na najwyższym poziomie. Dalsze korzystanie ze strony oznacza, że zgadzasz się na ich użycie.ZgodaPolityka Prywatności