„C++11“ von Rainer Grimm
Tagged as DE · book · review · c++
Written on
Endlich wissen was in C++11 neu ist, deswegen habe ich „C++11, Der Leitfaden für Programmierer zum neuen Standard” von Rainer Grimm gelesen. Ein dickes Buch mit 500 Seiten beschreibt was sich in der neuen Version seit 1998 geändert hat oder neu ist. – Und das ist eine Menge.
Immer wieder war ich erstaunt über ungewöhnliche neue Konstrukte und neue Syntax. Solch große Änderungen hatte ich einer reifen Sprache nicht zugetraut. Meine Highlights in C++ sind:
- C++ iteriert Container jetzt mit einer for-each-Schleife. In neueren Sprachen für uns schon lange Standard, können wir dies auch in C++11 nutzen;
- mit Lambda-Funktionen unterstützt uns C++ jetzt in der funktionalen Programmierung – das funktioniert auch mit Templates;
- ganz verrückt sind rvalue-Referenzen und die Move-Semantik, übergebene Werte werden nicht kopiert sondern zum Empfänger verschoben (das heißt wer das Objekt in einem Funktionsaufruf übergibt hat es hinterher nicht mehr);
- ganz besonders mag ich, die neuen Datentypen wchar16_t und wchar32_t für UTF-16 und UTF-32, im gegensatz zum bisherigen wchar_t wurde hier explizit die Datenbreite definiert (wchar_t unter Linux hat 32 Bit, unter Windows nur 16 Bit);
- reguläre Ausdrücke existieren endlich auch in C++ und
- Smartpointer wurden sehr viel handlicher und einfacher zu verwenden.
Sehr mutig ist die Spezifikation auch weil sie eine neue Syntax für Funktionen einführt. Bisher definieren wir eine Funktion in der Reihenfolge „Rückgabetyp, Funktionsname und Parameterliste“. In C++ können wir den Rückgabetyp auch hinter die Parameterliste schreiben:
auto fac(int n) -> int {
return n > 0 ? n * fac(n - 1) : 1;
}
Rainer Grimm geht die Änderungen leicht verständlich an: in drei Durchgängen zeigt er zuerst nur was es neues gibt, im zweiten geht er weiter in die Tiefe der Erweiterungen und im dritten geht er ins Detail. Er Leser kann sich so schnell einen Überblick verschaffen und stolpert in den Details nicht darüber, wenn in Beispielen auch eine andere Neuerung als die gerade erklärte schon benutzt wird. Einziges Manko: im dritten Durchgang bei den Details wurde mir etwas langweilig. Trotzdem ein großartiges Buch dem ich vier von fünf Punkten gebe.