Online-Skript zur Vorlesung und Übung

Programmieren in C++


© 1999-2016 Dipl.Phys. Gerald Kempfer
Internet: www.kempfer.de; Mail: gerald@kempfer.de
(Stand: 06. Juli 2016)



1. Erweiterungen und Änderungen gegenüber C (ANSI-C)
       - 1.1. Die Entwicklung der Programmiersprache C++
       - 1.2. Kommentare
       - 1.3. Plazierung von Variablendeklarationen
       - 1.4. const
       - 1.5. struct, enum und union
       - 1.6. Funktionsprototypen
       - 1.7. Funktionsdeklaration ohne Angabe des Rückgabewertes
       - 1.8. Referenzen
       - 1.9. Variable Parameteranzahl
       - 1.10. Überladen von Funktionen
       - 1.11. Inline-Funktionen
       - 1.12. Mischen von C und C++

2. Objektorientierte Programmierung
       - 2.1. Grundlegende Begriffe der Objektorientierten Programmierung
       - 2.2. Klassen und Objekte
       - 2.3. Konstruktoren
       - 2.4. Destruktoren
       - 2.5. Statische Klassenelemente
       - 2.6. Read-Only-Methoden
       - 2.7. Friends
       - 2.8. this-Zeiger
       - 2.9. Methodenzeiger
       - 2.10. Designfehler

3. Vererbung
       - 3.1. Einführung
       - 3.2. Syntax der Vererbung
       - 3.3. Art der Ableitung
       - 3.4. Strukturen und Klassen
       - 3.5. Konstruktoren und Destruktoren abgeleiteter Klassen
       - 3.6. Kompatibilität in Klassenhierarchien
       - 3.7. Virtuelle Methoden
       - 3.8. Virtuelle Destruktoren

4. Mehrfachvererbung
       - 4.1. Mehrfachvererbung
       - 4.2. Virtuelle Oberklassen

5. (Datei-)Ein- und Ausgabe in C++
       - 5.1. Bildschirmausgabe mit cout
       - 5.2. Steuerung der Ausgabe über Flags
       - 5.3. Steuerung der Ausgabe über Manipulatoren
       - 5.4. Tastatureingabe mit cin
       - 5.5. Datei-Ein- und Ausgabe

6. Namensräume
       - 6.1. Definition von Namensräumen
       - 6.2. using-Direktive
       - 6.3. Qualifizierte Namen
       - 6.4. using-Deklaration
       - 6.5. Namensräume abkürzen
       - 6.6. using-Direktiven in Klassen
       - 6.7. Geschachtelte Namensräume
       - 6.8. Namenslose Namensräume

7. Datentypen in C++
       - 7.1. Komplexe Zahlen
       - 7.2. Logischer Datentyp
       - 7.3. Zeichenketten
       - 7.4. Vektor
       - 7.5. Konvertierung zwischen den Datentypen (Typumwandlung)

8. Dynamische Speicherverwaltung in C++
       - 8.1. Speicherbereiche reservieren
       - 8.2. Reservierte Speicherbereiche freigeben
       - 8.3. Größe des reservierten Speicherbereichs ändern
       - 8.4. Fehlerbehandlung

9. Polymorphismus
       - 9.1. Rein virtuelle Methoden
       - 9.2. Abstrakte Basisklassen

10. Datei- und String-Streams
       - 10.1. Die I/O-Stream-Klassenhierarchie
       - 10.2. Datei-Streams
       - 10.3. String-Streams

11. Überladen von Operatoren
       - 11.1. Überladen von Operatoren durch friend-Funktionen
       - 11.2. Überladen von Operatoren mit Methoden
       - 11.3. Allgemeines
       - 11.4. Typumwandlungs-Operatoren
       - 11.5. Kopieren von Objekten
       - 11.6. Überladen des Funktionsoperators ()
       - 11.7. Überladen des Komponentenzugriffsoperators ->
       - 11.8. Überladen von new und delete

12. Templates
       - 12.1. Funktions-Templates
       - 12.2. Klassen-Templates
       - 12.3. Member-Templates
       - 12.4. Rekursive Templates

13. Fehlerbehandlung
       - 13.1. Einführung
       - 13.2. Ausnahmebehandlung
       - 13.3. Exception-Spezifikationen
       - 13.4. vordefinierte Exception-Klassen
       - 13.5. Besondere Fehlerbehandlungsfunktionen
       - 13.6. Benutzerdefinierte Fehlerbehandlungsfunktionen
       - 13.7. Zusicherungen
       - 13.8. Speicherfehler durch Exceptions

14. Iteratoren
       - 14.1. Einführung
       - 14.2. Iterator-Kategorien
       - 14.3. Beispiel einer verketteten Liste mit Iteratoren
       - 14.4. Spezielle Iteratoren

Anhang 1: Schlüsselwörter