C++: Einführung und Überblick

C++ wurde ursprünglich erfunden, um als Superset des guten alten C dessen Schwächen leichter handhabbar zu machen. Die Eckpfeiler der damals neuen Sprache waren zum Beispiel,

  • Konstruktoren und Destruktoren, die es ermöglichen, Ressourcenverwaltung kontrollierter zu implementieren

  • Objektorientierte Programmierung mit Vererbung und Interfaces. OOP war zwar schon aus anderen Programmiersprachen bekannt, diese haben aber nie in den Mainstream Einzug gehalten.

C++ hieß damals “C mit Klassen”, was ein treffender Name war. Seitdem hat sich die Sprache allerdings weiterentwickelt. Man kann heute noch vereinzelt Artefakte von C erkennen (Pointer wird es immer geben), und man kann C++ noch so programmieren, als ob es C wäre - aber mit C hat das ganze soviel zu tun wie ein ICE mit einer Dampflokomotive.

C++ stellt dem Programmierer eine Vielfalt an Datenstrukturen und Algorithmen zur Verfügung, die einfach da sind und funktionieren. Dem Programmierer werden Sprachkonstrukte - und ein geniales Typensystem - zur Verfügung gestellt, um eigene Libraries zu erstellen. Dass C++ eine einfache Programmiersprache ist, hat allerdings noch keiner gewagt zu behaupten.

Der Kurs gibt, basierend auf einem Vorwissen, was C anbelangt, eine Einführung in die Sprache und ihre Sprachmittel und Libraries. Und, was vielleicht das wichtigste ist, in ihre Fallen - deren gibt es nämlich reichlich.

Zielpublikum

  • C-Programmierer, die einen Umstieg erwägen - unter Umständen, weil sich die Zielplattform von einem Embeddedbetriebssystem auf Linux weiterentwickelt hat.

  • Programmierer, die bereits C++ einsetzen, aber mehr machen wollen. Vielerorts wird zum Beispiel C++ wie C programmiert - was möglich aber nicht optimal ist.

Kursinhalt

  • Datenkapselung

    • Klassen

    • Konstruktoren und Destruktoren

    • Kopieren von Objekten (inklusive Fallstricke)

  • Funktionen und Methoden

    • Overloading

    • const: der Weg zur Korrektheit

    • Referenzen: Pointer mal anders

    • static: die 100ste Bedeutung dieses Keywords

    • Operator-Overloading

  • Exception Handling: Strukturierte Fehlerbehandlung, abseits von if-else

  • Templates: eine Einführung in generische Programmierung

  • Standard Template Library (STL)

    • Sortieren

    • Suchen

    • Sequentielle Container

    • Assoziative Container

  • Dynamische Speicherverwaltung: die Operatoren new und delete

  • Vererbung

    • Grundlegende Mechanismen

    • Interfaces — das virtual Keyword

    • Mehrfachvererbung (inklusive Fallstricke)

  • Objektorientiertes Design: Grundlagen — alles andere wäre zuviel

  • Die Neuerungen aus C++11 und C++14: teilweise werden bereits in den bisherigen Kapiteln die Unterschiede zwischen “herkömmlichen” C++ (C++03) und dem “neuen” C++ erläutert. Es gibt mehr:

    • Range Based for Loops

    • Lambda Expressions

    • rvalue Referenzen und Moving

    • Threading

Empfohlene Vorkenntnisse

Solide Kenntnisse in C werden vorausgesetzt.