Rückschau
Modernes C++ in der Praxis – Folge 61
Bevor wir uns der Frage widmen, wie modernes C++ in den letzten Jahren gereift ist, gilt es die Frage zu beantworten, was denn Legacy C++ und modernes C++ unterscheidet? Als Legacy C++ bezeichnet man C++ vor C++11. Das umfasst den ersten C++-Standard C++98 sowie C++03, eine kleine Erweiterung. Das beantwortet auch schon beinahe den zweiten Teil der Frage: Unter modernem C++ versteht man C++11, C++14 und C++17. Für C++20 hat sich noch kein Begriff in der C++-Community eingebürgert, es bleibt in diesem Schema außen vor. Der einzige Konsens lautet, dass mit C++20 eine neue Ära beginnt.
Wie lässt sich die Evolution von Legacy C++ zu modernem C++ am besten veranschaulichen? Diese Frage sollen die zehn Leitsätze für moderne C++-Entwicklung aus Abbildung 1 auf den Punkt bringen.
Implizite Typkonvertierung
Implizite Typkonvertierungen sind ein häufiger Grund für undefiniertes Programmverhalten. Das Programm kann abstürzen oder ein falsches beziehungsweise im schlimmsten Fall nur vermeintlich richtiges Ergebnis liefern.
Doch wann treten implizite oder heimliche Typkonvertierungen auf? Unschönerweise viel zu oft. So lässt sich eine Int-Variable mit einem Double-Wert initialisieren, was die Nachkommastellen abschneidet: Ein weiteres Beispiel liefern die Null-Pointer-Konstanten und , die sich beide in eine natürliche Zahl konvertiert „heimlich“ in die ganze Zahl 0.
You’re reading a preview, subscribe to read more.
Start your free 30 days