Martin Schader Stefan Kuhlins Programmieren in C+ Einführung in den Sprachstandard C++ Zweite, verbesserte und erweiterte Auflage Mit 25 Abbildungen Springer-Verlag Berlin Heidelberg New York London Paris Tokyo Hong Kong Barcelona Budapest
1 Einleitung 1 1.1 Grundbegriffe 1 1.2 Syntaxnotation 2 2 Lexikalische Konventionen 3 2.1 Ein erstes Beispiel 3 2.2 Lexikalische Elemente 4 2.3 Kommentare 4 2.4 Bezeichner 4 2.5 Schlüsselwörter 5 2.6 Operatoren 5 2.7 Header-Dateien 6 3 Vordefinierte Datentypen 9 4 Literalkonstanten 13 4.1 Ganzzahlige Konstanten 13 4.2 Zeichenkonstanten 14 4.3 Gleitpunktkonstanten 15 4.4 Zeichenketten 16 4.5 Beispiele 17 5 Variablen und Konstanten 19 5.1 Einleitung 19 5.2 Deklaration und Definition von Variablen 21 5.3 Symbolische Konstanten 23 5.4 L-Werte 24 5.5 Beispiel 24 6 Typumwandlungen und Ausdrücke 27 6.1 Standardkonversionen 27 6.2 Ausdrücke 30 6.3 Übungsaufgaben 42 7 Anweisungen 45 7.1 Einleitung 45 7.2 Ausdrucksanweisungen 46 7.3 Auswahlanweisungen 47 7.4 Wiederholungsanweisungen 50 7.5 Sprunganweisungen 53 7.6 Beispiel 54
viii 7.7 Übungsaufgaben 55 8 Abgeleitete Datentypen 57 8.1 Felder 57 8.2 Zeichenfelder 61 8.3 Zeiger 62 8.4 Zeigerarithmetik 66 8.5 Zeiger und Felder 68 8.6 Die Operatoren new und delete 72 8.7 Referenzen 77 8.8 Aufzählungstypen 80 8.9 Typnamen und typedef 81 8.10 Der abgeleitete Typ void* 83 8.11 Übungsaufgaben 85 9 Typumwandlungen 87 9.1 Standardkonversionen 87 9.2 Explizite Typumwandlungen 87 9.3 Übungsaufgaben 90 10 Geltungsbereiche und Lebensdauer 91 10.1 Geltungsbereiche 91 10.2 Die Lebensdauer von Objekten 95 10.3 Übungsaufgaben 98 11 Funktionen 101 11.1 Deklaration und Definition von Funktionen 101 11.2 Funktionsaufruf und Argumentübergabe 104 11.3 Die Rückgabe von Funktionswerten 106 11.4 Referenzargumente 107 11.5 Felder als Argumente 109 11.6 Zeiger auf Funktionen 111 11.7 Der Geltungsbereich Funktion 114 11.8 Standardargumente 114 11.9 Unspezifizierte Argumente 116 11.10 Die Funktionen maino und exito 118 11.11 inline-funktionen 119 11.12 Übungsaufgaben 120 12 Externe und interne Bindung 123 13 Überladene Funktionsnamen 131 13.1 Einleitung 131 13.2 Funktionen mit einem Argument 134 13.3 Funktionen mit mehreren Argumenten 138
ix 13.4 Zeiger auf überladene Funktionen 140 13.5 Übungsaufgaben 141 14 Klassen 143 14.1 Deklaration und Definition von Klassen 143 14.2 Klassenobjekte 145 14.3 Der Geltungsbereich Klasse 146 14.4 Die Spezifizierung von Zugriffsrechten 150 14.5 Der Zeiger this 153 14.6 Namensdeklarationen 154 14.7 Die Konstruktion von Klassenobjekten 158 14.8 Destruktoren 165 14.9 Als const deklarierte Elementfunktionen 167 14.10 f riend-funktionen und -Klassen 169 14.11 static Klassenelemente 173 14.12 inline-elementfunktionen 177 14.13 Zeiger auf Klassenelemente 179 14.14 Klassenobjekte als Klassenelemente 183 14.15 Lokale Typnamen 186 14.16 Bitfelder 187 14.17 Die Bindung von Klassennamen 189 14.18 Header-Dateien 192 14.19 Übungsaufgaben 195 15 Spezielle Konstruktoren 199 15.1 Der Copy-Konstruktor 199 15.2 Typumwandlungen mittels Konstruktor 203 15.3 Übungsaufgaben 205 16 Überladene Operatoren 207 16.1 Einleitung 207 16.2 Der Zuweisungsoperator = 208 16.3 Einstellige Operatoren 210 16.4 Zweistellige Operatoren 213 16.5 Typumwandlungen mittels Konversionsfunktion 217 16.6 Übungsaufgaben 219 17 Abgeleitete Klassen 223 17.1 Einfache Vererbung 223 17.2 Der Zugriff auf Klassenelemente 227 17.3 Standardkonversionen von Zeigern und Referenzen 231 17.4 Virtuelle Funktionen 237 17.5 Abstrakte Klassen 243 17.6 Mehrfachvererbung 246
x 17.7 Virtuelle Basisklassen 250 17.8 Spezielle Zugriffsrechte 254 17.9 Übungsaufgaben 258 18 Parametrisierte Funktionen und Klassen 263 18.1 Einleitung 263 18.2 Parametrisierte Funktionen 264 18.3 Parametrisierte Klassen 271 18.4 Übungsaufgaben 282 19 Streams 285 19.1 Einleitung 285 19.2 Formatierung 285 19.3 Ein- und Ausgabe benutzerdefinierter Datenobjekte 286 19.4 Ein- und Ausgabe mit Dateien 288 19.5 Übungsaufgaben 290 20 Ausnahmebehandlung 291 20.1 Einleitung 291 20.2 Das Auswerfen von Ausnahmen 293 20.3 Die Behandlung von Ausnahmen 295 20.4 Zugriffsrechte 299 20.5 Übungsaufgaben 299 Anhang 301 A ASCII-Tabelle 301 B Arithmetische Standardkonversionen 302 C Operatorprioritäten 303 D Syntaxregeln 304 E Die Klasse Liste 306 Literaturverzeichnis 310 Index 311