Inhaltsverzeichnis
Vorwort
C++ - die Sprache der Praxis
Einleitung
Computersprachen und Problemlösungen
Von C zu C++
Grundidee der OOP
Entwicklungsgeschichte von C++
Das Typkonzept in C
Was ist ein Datentyp?
Datentyparten
Definition privater Typen in C
Definitionen und Deklarationen
Typdefinition mit Strukturen
Definition von strukturierten Variablen
Operationen mit strukturierten Variablen
Operatorfunktionen
Informationsdateien
Übersetzen und Linken
Projekte bei IDE's (Integrierte Entwicklungsumgebung)
Probleme und Gefahren bei C
Von der Struktur zur Klasse - von C zu C++
Die Klasse
Begriffe der OOP
Aufbau einer Informationsdatei mit Klassen
Benennung der Informationsdatei
Implementierung der Methoden
Arbeiten mit Objekten
Bindung
Botschaftenkonzept und andere Begriffe
Konstruktoren und Destruktor
Operationen mit Variablen
Initialisierung für Objekte
Konstruktor
Überlagerung von Methoden
Initialisierte Parameter
Destruktor
Dynamische Speicherverwaltung
Ein Überblick
Die Halde, der Heap
Funktionen malloc() und free()
Die Operatoren new und delete
Anlegen von Feldern mit Grunddatentypen
Dynamische Objekte
Ein Beispiel: die Zeile
Hinweise zur Weiterarbeit
Parameterübergabe bei Unterprogrammen
Formale und aktuelle Parameter
Übergabemethoden: per Wert oder per Referenz
Allgemeine Referenz oder Alias-Variable
Ablauf eines Unterprogrammaufrufes
Der Kopier-Konstruktor
Überlagerung von Operatoren
Aufruf der Operatormethoden
Typwandlung mit dem Schlüsselwort operator
Objekte zur Ein- und Ausgabe
Ein- und Ausgaben bei C
Probleme mit printf()
Standardobjekte: cout, cin, cerr
Arbeiten mit den Standardobjekten
Aufbau einer Operatorfunktion
Befreundete Funktionen und Klassen
Befreundete Funktionen
Befreundete Klassen
Drei Arten von Funktionen
Optimierung beim Arbeiten mit Objekten
Optimierung durch Referenzübergaben
Optimierung mit inline-Funktionen
Elemente der Klasse
Wiederverwendung von Software und Vererbung
Möglichkeiten der Wiederverwendung von Software
Objekte als Elemente einer Klasse
Wiederverwendung durch Vererbung
Erweiterung des Schutzkonzeptes in Klassen
Offene und geschlossene Vererbung
Einfache und mehrfache Vererbung
Klassendefinition mit mehrfacher Vererbung
Virtuelle Basisklasse
Beispiel für die Vererbung - ein Fenstersystem für den PC
Kopierkonstruktoren für abgeleitete Klassen
Späte Bindung oder Polymorphismus
Bindung Objekt - Methode
Frühe Bindung
Späte Bindung
Späte Bindung und Botschaftenkonzept
Mehrsprachiges Programmieren
Einbinden von C Programmen
Einfügen von Assemblerbefehlen
Ein- und Ausgabebibliothek
Arbeiten mit Dateien
Statustest
Formatfreie E/A
Formatierung der Verbindung - Manipulatoren
Typkonvertierung
Typkonvertierungen in C
Funktionale Schreibweise
Funktionale Schreibweise für Basisdatentypen
Funktionale Schreibweise für Klassen
Klassen-Konvertierungsoperatoren
Typkonvertierungen bei Vererbungen
Neue Konvertierungsoperatoren in C++
Der Operator "const_cast"
Der Operator "static_cast"
Der Operator "dynamic_cast"
Der Operator "reinterpret_cast"
Tendenzen in der Typkonvertierung
Templates/Codeschablonen
Überlagerte Funktionen
Funktions-Templates
Typangaben innerhalb von Templates
Linken von Template-Funktionen
Explizite Deklaration von generierten Funktionen
Template-Makros
Klassen-Templates
Containerklassen
Behandlung von eigenen Klassen
Templates mit Wertparametern
Wert-Parameter und statischer Speicher
Templates und Bibliotheken
Problem der Fehlerbehandlung
Fehlerbehandlung mit C++
Fehlerbehandlungen in C und C++
Ignorieren einer Statusmeldung
Statusabfrage
Asynchrone Signale
Wiederaufsetzpunkte
Konventionelle Fehlerbehandlung in C++
Objekte und Zustandseigenschaften
Fehlerhandler für die Speicherverwaltung
Strukturierte Fehlerbehandlung in C++
Garantierte Fehlerbehandlung
Neue Schlüsselwörter
Allgemeine Abbruchfunktion
Setzen der allgemeinen Abbruchfunktion
Mehrstufige Fehlerbehandlung
Behandlung des Default-Falles
Speicherverwaltungsfehler bei new
Allokierungsfehler im Standard-Entwurf
Liste der möglichen Exceptions
Behandlung von Fehlergruppen
Einfache Gruppenbildung über Konstante
Aufbau von Fehlerhierarchien
Dynamische Typinformation
Implizite Typverwendung
Dynamische Ermittlung des Typs
Typinformation mit "type_info"
Typermittlung mit "typeid"
Dynamische Typkonvertierung
Nachwort
Literatur- und Software-Verzeichnis
Glossar