Suchen und Finden
Vorwort
7
Danksagung
8
Inhaltsverzeichnis
9
1 Einführung
12
2 DieSprache C++
16
2.1 Geschichte und Paradigmenwandel
16
2.2 Grundlagen
20
2.2.1 Bezeichner in C++
23
2.2.2 Der Präprozessor
24
2.2.3 Variablen
32
2.2.4 Standarddatentypen
33
2.2.5 Literalkonstanten
36
2.2.6 Konstanten
37
2.2.7 Aufzählungen
38
2.2.8 Arrays
40
2.2.9 Zeiger
40
2.2.10 Referenzen
47
2.2.11 Typenkonvertierung
48
2.2.12 Ausdrücke
50
2.2.13 Operatoren
51
2.2.14 Anweisungen
55
2.2.15 Kontrollstrukturen
56
2.2.16 Funktionen
60
2.2.17 Funktionsüberladung
65
2.2.18 Funktions - Inlining
67
2.2.19 Makros
69
2.2.20 Dynamische Speicherallokation
70
2.2.21 Strukturen und Klassen
78
2.2.22 Typenkonvertierungmit Konstruktoren
102
2.2.23 Globale, automatischeund dynamische Instanziierung
105
2.2.24 Speicherklassen
111
2.2.25 Der Scope - Operator
117
2.2.26 Verschachtelte Typen
121
2.2.27 Die friend - Deklaration
122
2.2.28 StatischeMethoden und Attribute
123
2.2.29 Vererbung
125
2.2.30 Virtuelle Methoden und Polymorphismus
132
2.2.31 Operatoren der Typenkonvertierung
138
2.2.32 Mehrfachvererbung
145
2.2.33 Virtuelle Vererbung
149
2.2.34 Das Schlüsselwort const
152
2.2.35 Operatorüberladung
156
2.2.36 Exception Handling
166
3 Die Objektorientierte Programmierung mit C++
184
3.1 Der Klassenbegriff
185
3.2 Die Rolle von Patterns und Idiomen
187
3.2.1 Der Iterator
189
3.2.2 Das Zustandsmuster
190
3.2.3 Das Singleton -Muster
198
3.3 Datenstrukturen und Containerklassen
208
3.3.1 Die Liste
209
3.3.2 Der Vektor
219
3.3.3 Dynamische Container und das Problemder Speicherfragmentierung
221
3.3.4 Verfeinerung des Zugriffs durch überladene Operatoren
222
3.4 Arbeitenmit Invarianten
224
4 Generische und generative Programmierung mit C++
232
4.1 Templates
233
4.1.1 Funktionstemplates
234
4.1.2 Klassentemplates
237
4.1.3 Methodentemplates
238
4.1.4 Instanziierung von Templates
240
4.1.5 Member- Templates
241
4.1.6 Spezialisierung von Templates
242
4.1.7 Partielle Spezialisierung
243
4.1.8 Vorgabeargumentefür Templateparameter
246
4.1.9 Abhängige und qualifizierte Namen
247
4.1.10 Explizite Qualifizierung von Templates
252
4.1.11 Barton- Nackman- Trick
253
4.1.12 Das Schlüsselwort typename
255
4.1.13 Template - Templateparameter
258
4.1.14 Container mit Templates
262
4.1.15 Smart Pointer mit Templates
266
4.1.16 Projektorganisationmit Templates
272
4.2 Konzepte für den Einsatz von Templates
279
4.2.1 „Policy Based Design“
281
4.2.2 Idiome für die Template - Programmierung
282
4.2.3 Compiletime - Assertions
283
4.3 Aspektorientierte Programmierung
284
5 Die C++ - Standardbibliothek
288
5.1 Die Geschichte der Standardbibliothek
288
5.2 Die Teilbereiche der Standardbibliothek
289
5.2.1 Die Streams
291
5.2.2 Formatierungen auf einem ostream
296
5.2.3 Die Manipulatoren
297
5.2.4 Die File - Streams
300
5.2.5 Die String- Streams
301
5.2.6 Die STL
303
5.2.7 Die Stringklasse std::string
337
5.2.8 Pseudocontainer für optimiertes Rechnen
343
5.2.9 Autopointer
353
6 Das Softwareprojekt mit C++
358
6.1 Modularisierung eines C++ - Projekts
358
6.1.1 Der Umgang mit Headerdateien
359
6.1.2 Namensräume
364
6.1.3 Das argumentenabhängigeLookup - Verfahren
372
6.1.4 Einige Anmerkungen zumLinker
374
6.1.5 Überladen der Operatoren new und delete
378
6.2 Persistenz und Serialisierung
385
6.3 Systemprogrammierungmit C++
388
6.3.1 Einfaches Objektpooling
388
6.3.2 Nebenläufige Programmierung
393
Literatur
406
Abbildungsverzeichnis
408
Listings
410
Index
420
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.