Errata

S. 53 Listing ganz unten: Es muss cin >> a; heißen.

S. 71 Abschnitt if constexpr: Ersetze den Nebensatz "wenn wahrheitswert schon zur Compilationszeit bekannt ist" durch "wenn wahrheitswert wahr ist. wahrheitswert muss schon zur Compilationszeit bekannt sein"

S. 76 Mitte: n darf natürlich nicht const oder constexpr sein!

S. 85, Abbildung 1.14: Nach class fehlt der (optionale) Typname, unter dem die Aufzählung danach angesprochen werden kann (vgl. Abb. 1.15 auf S. 88).

S. 86, nach 2/3 der Seite. Richtig ist: Wochentag::montag = morgen;      // Fehler (montag ist Konstante)
(Wochentag:: fehlt am Anfang der Zeile)

S. 190-191, Listing 3.27: 1. std::endl ist überflüssig, weil cerr eine ungepufferte Ausgabe bewirkt.
2. Die Anweisung radius = r; muss nach der if-Anweisung stehen!

S. 329, Listing 6.27: Streichen Sie die Implementierung der Funktion flaeche(), damit das Listing dem Text auf S. 328 entspricht. Die Funktionsdefinition bewirkt, dass die Klasse nicht mehr abstrakt ist, wie behauptet.

S. 330, 1. Zeile: Ersetze string_view durch string.

S. 332 Mitte. Den ersten Satz ersetzen durch: "Auf welches Subobjekt soll der Zeiger zeigerAufGrafischeObjekte[2] in Listing 6.30 verweisen?"

S. 333, Listing 6.33: Der Parameter für string_view muss einen anderen Namen haben, etwa beschriftung, der dann auch bei der Initialisierung von BeschriftetesObjekt verwendet wird. In den downloadbaren Beispielen ist es korrekt.

S. 379, Abbildung 8.4: const muss wie explicit optional sein. In der Praxis wird ein Typumwandlungsoperator jedoch immer const sein.

S. 578: Zeile 29 im Listing streichen.

S. 852, 2. Absatz: Mitte. Den ersten Satz "Die äußeren ..." streichen. C++11 erforderte zwei Klammerebenen, seit C++14 genügt eine.

Tipps

S. 571, Abschnitt 16.2.1 zu Linux: Ein Tipp zur Vereinfachung: Wenn Sie Linux Mint 20 (Ulyana) haben, genügt die Installation von Qt-default mit der Anwendungsverwaltung. Um libqwt5 müssen Sie sich nicht mehr kümmern, und der Aufruf von qtenv.sh (siehe Verzeichnis cppbuch/k16) ist nicht notwendig.

S. 689, Abschnitt 21.3.7: Falls das Objekt auf der linken Seite der Zuweisung groß genug ist, um das Objekt auf der rechten Seite aufzunehmen, kann die Performance für L-Werte verbessert werden - auf Kosten der Einfachheit. Man kann die Kopie bei der Übergabe des Arguments einsparen, wenn es als const Klasse& übergeben wird. Die Übertragung der Werte muss man dann natürlich selbst übernehmen. Für R-Werte braucht man dann noch operator=(Klasse&&).