Inhaltsübersicht Vorlesung
Das folgende ist eine thematisch geordnete Übersicht über den Inhalt der Vorlesung, die ich aus meinen Vorlesungsunterlagen erstellt habe.
Grundlagen
- Programmorganisation
- Übersetzungseinheit, Präprozessor, Compiler, Linker
- Deklarationen, Definitionen
- Quelldateien:
#include (< > und ""), #if defined/#ifdef, "Header-Guards"
namespaces
- qualifizierter Aufruf,
using-Deklaration, using-Direktive
- globaler
namespace
- unbenamte
namespaces
- Datentypen
- Tabelle der Operatoren
- Objekte, Zeiger, Referenzen
- automatische Objekte, Zeiger und Referenzen
- konstante Objekte, Zeiger, Referenzen
- statische Objekte
void*-Zeiger
- Tabelle der Funktionsargumente
- Funktionen
inline
- Überladung
- Default-Parameter
Klassen und Vererbung
- einfache benutzerdefinierte Datentypen
struct/class, public/private
- spezielle Elementfunktionen: Konstruktoren, Destruktor, Zuweisungsoperatoren
inline
- implizite Typumwandlungen,
explicit
operator., operator-> und operator::
- Operatoren überladen
- Äquivalenz
f(a,b), operator@(a,b) und a@b
- Überladung als Elementfunktion vs. freie Funktion
- Funktionsobjekte:
operator()()
- Umwandlungsoperatoren
- Koenig-Lookup (argument-dependent lookup - ADL)
- Überladung von
new und delete (Wozu?)
- nicht-polymorphe Vererbung
- Polymorphie
- Mehrfachvererbung
Felder, Zeiger, dynamischer Speicher
- Zeiger, Zeigerarithmetik
- Felder und Zeiger, Indizes
- dynamische Objekte
new/delete, new[]/delete[]
- Unterschiede zwischen dynamischen, automatischen und globalen Objekten
Typsystem
- RTTI
typeid, std::type_info
dynamic_cast<>
- andere Typumwandlungen
static_cast<>, dynamic_cast<>, const_cast<>, reinterpret_cast<> vs. alte Formen
Ausnahmen
- Syntax
- Hierarchien von Ausnahmeklassen
- Problem bei Mehrfachvererbung (Stichwort: "unambiguous public base class")
throw specifications
- Klassenhierarchie der von
std::exception abgeleiteten Klassen
- Ausnahmesicherheit/Ressourcenmanagement (Smart Pointer), "Rule of three"
Generische Programmierung
- generische Datentypen und generische Funktionen
- Arten von Template-Argumenten
- Spezialisierung, teilweise Spezialisierung
- fortgeschrittene Template-Techniken, Template-Metaprogrammierung (Vor-Nachteile)
Standardbibliothek
- Strings
- Streams, Dateien und Stringstreams
std::istream, std::ostream
std::ifstream, std::ofstream, std::fstream
std::ostringstream, std::istringstream, std::stringstream
- Manipulatoren
std::getline()
- STL
- Container: sequentielle, assoziative, Adapter
- Algorithmen:
std::find, std::copy, std::remove, std::sort, std::unique
- Iteratoren: Kategorien,
std::advance(iiter, dist), std::distance(iiter1, iiter2), Indizes vs. Iteratoren
- Funktionsobjekte