Einführung in C++
Einstieg in die moderne Programmierung mit C++ / Setzt keine Programmier-oder C-Kenntnisse voraus / Inkl.Objektorientierung, Standardbibliothek, Zeiger u.v.m
Einführung in C++
Einstieg in die moderne Programmierung mit C++ / Setzt keine Programmier-oder C-Kenntnisse voraus / Inkl.Objektorientierung, Standardbibliothek, Zeiger u.v.m
- Gebundenes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Ohne Umwege und ohne Vorkenntnisse lernen Sie, in C++ zu programmieren - und zwar ganz nebenbei so, wie es aktuelle Profi-Praxis ist. Der vermeintlichen Dinosaurier unter den objektorientierten Sprachen hat neue Standards und moderne Programmierwerkzeuge zu bieten. Lernen Sie hier, damit umzugehen. Lassen Sie sich in der C++-Welt an die Hand nehmen. Ob es um einfache Variablen oder anonyme Funktionen geht - unser Autor führt Sie an allen Fallstricken vorbei und erläutert Fachbegriffe und Best Practices zu den Grundlagen genauso wie zu professionellen Themen.
Aus dem Inhalt:
Ausdrücke und…mehr
- Handbuch IT-Projektmanagement (eBook, ePUB)54,99 €
- Christoph HöllerAngular39,90 €
- Michael BonacinaC++ Programmieren für Einsteiger (Gekürzte Ausgabe)14,99 €
- Boris ChernyProgrammieren in TypeScript34,90 €
- Bernhard LahresObjektorientierte Programmierung49,90 €
- Dirk LouisJava20,00 €
- Denise Banks-GrasedyckSAP-S/4HANA-Projekte erfolgreich managen59,90 €
-
-
-
-
-
-
-
-
-
-
-
-
-
Aus dem Inhalt:
Ausdrücke und AnweisungenWerte und DatentypenAblaufkontrolleAlgorithmen und KomplexitätCompiler, IDE und KonsoleVererbung, Aggregation, Design PatternsHeap und Stack verstehenDateizugriffe und StreamsLebenszyklen und Zugriffskontrolle
Hinweis: Dieser Artikel kann nur an eine deutsche Lieferadresse ausgeliefert werden.
- Produktdetails
- Galileo Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/02677
- Seitenzahl: 520
- Erscheinungstermin: 27. Oktober 2014
- Deutsch
- Abmessung: 246mm x 174mm x 32mm
- Gewicht: 997g
- ISBN-13: 9783836226776
- ISBN-10: 3836226774
- Artikelnr.: 41257171
- Galileo Computing
- Verlag: Rheinwerk Verlag
- Artikelnr. des Verlages: 459/02677
- Seitenzahl: 520
- Erscheinungstermin: 27. Oktober 2014
- Deutsch
- Abmessung: 246mm x 174mm x 32mm
- Gewicht: 997g
- ISBN-13: 9783836226776
- ISBN-10: 3836226774
- Artikelnr.: 41257171
Vorwort ... 20
TEIL I Erste Schritte ... 23
1. Über dieses Buch ... 25
1.1 ... Der C++-Standard ... 26
1.2 ... Verwendete Formatierungen ... 27
2. Vom Problem zum Programm ... 29
2.1 ... Was ist Programmieren? ... 30
2.2 ... Softwareentwicklungsmethoden ... 30
2.3 ... Entwurfsmuster ... 32
2.4 ... Algorithmen ... 33
2.5 ... Ressourcen ... 34
3. Programmieren in C++ ... 36
3.1 ... Übersetzen ... 37
3.2 ... Aktuelle Compiler ... 37
3.3 ... Entwicklungsumgebungen ... 39
3.4 ... Die Kommandozeile unter Ubuntu ... 41
3.5 ... Die IDE »Microsoft Visual Studio Express« unter Windows ... 44
3.6 ... Schneller ... 47
3.7 ... Aufgaben ... 47
4. Ein ganz schneller Überblick ... 49
4.1 ... Kommentare ... 50
4.2 ... Die »include«-Direktive ... 50
4.3 ... Die Standardbibliothek ... 51
4.4 ... Die Funktion »main()« ... 51
4.5 ... Typen ... 51
4.6 ... Variablen ... 52
4.7 ... Initialisierung ... 52
4.8 ... Ausgabe auf der Konsole ... 53
4.9 ... Anweisungen ... 53
4.10 ... Aufgaben ... 54
5. Ohne Eile erklärt ... 56
5.1 ... Leerräume, Bezeichner und Token ... 58
5.2 ... Kommentare ... 59
5.3 ... Funktionen und Argumente ... 60
5.4 ... Seiteneffekt-Operatoren ... 61
5.5 ... Die »main«-Funktion ... 62
5.6 ... Anweisungen ... 64
5.7 ... Ausdrücke ... 66
5.8 ... Zuweisungen ... 68
5.9 ... Typen ... 69
5.10 ... Variablen -- Deklaration, Definition und Initialisierung ... 74
5.11 ... Details zur »include«-Direktive ... 75
5.12 ... Eingabe und Ausgabe ... 76
5.13 ... Der Namensraum »std« ... 77
5.14 ... Aufgaben ... 79
6. Programmiertechnik, 1. Dan: Lesbarer Code ... 81
6.1 ... Kommentare ... 81
6.2 ... Dokumentation ... 82
6.3 ... Einrückungen und Zeilenlänge ... 83
6.4 ... Zeilen pro Funktion und Datei ... 84
6.5 ... Klammern und Leerzeichen ... 84
6.6 ... Namen ... 86
TEIL II Die Elemente von C++ ... 87
7. Operatoren ... 89
7.1 ... Operatoren und Operanden ... 90
7.2 ... Überblick über Operatoren ... 90
7.3 ... Arithmetische Operatoren ... 91
7.4 ... Bitweise Arithmetik ... 92
7.5 ... Zuweisungsoperatoren ... 93
7.6 ... Post- und Präinkrement sowie Post- und Prädekrement ... 94
7.7 ... Relationale Operatoren ... 95
7.8 ... Logische Operatoren ... 95
7.9 ... Pointer- und Dereferenzierungsoperatoren ... 97
7.10 ... Besondere Operatoren ... 97
7.11 ... Funktionsähnliche Operatoren ... 99
7.12 ... Operatorreihenfolge ... 100
7.13 ... Aufgaben ... 101
8. Eingebaute Typen ... 103
8.1 ... Eingebaute Datentypen ... 105
8.2 ... Eingebaute Datentypen initialisieren ... 105
8.3 ... Ein schneller Überblick ... 106
8.4 ... Ganzzahlen ... 107
8.5 ... Wahrheitswerte ... 118
8.6 ... Zeichentypen ... 119
8.7 ... Aufgaben ... 122
9. Strings und Streams ... 124
9.1 ... Der Zeichenkettentyp »string« ... 124
9.2 ... Streams ... 129
9.3 ... Eingabe- und Ausgabeoperatoren ... 130
9.4 ... Aufgaben ... 134
10. Behälter und Zeiger ... 135
10.1 ... Parametrisierte Typen ... 136
10.2 ... Die einfachen Sequenzcontainer ... 136
10.3 ... Weitere Container ... 141
10.4 ... Container-Gemeinsamkeiten ... 144
10.5 ... Algorithmen ... 145
10.6 ... Zeiger und C-Arrays ... 146
10.7 ... Aufgaben ... 147
11. Funktionen ... 148
11.1 ... Deklaration und Definition einer Funktion ... 149
11.2 ... Funktionstyp ... 150
11.3 ... Funktionen verwenden ... 150
11.4 ... Eine Funktion definieren ... 151
11.5 ... Mehr zu Parametern ... 152
11.6 ... Funktionskörper ... 156
11.7 ... Parameter umwandeln ... 158
11.8 ... Funktionen überladen ... 160
11.9 ... Default-Parameter ... 162
11.10 ... Beliebig viele Argumente ... 163
11.11 ... Alternative Schreibweise zur Funktionsdeklaration ... 164
11.12 ... Spezialitäten ... 165
11.13 ... Aufgaben ... 167
12. Anweisungen im Detail ... 169
12.1 ... Anweisungsblock ... 171
12.2 ... Die leere Anweisung ... 174
12.3 ... Deklarationsanweisung ... 175
12.4 ... Ausdrucksanweisung ... 176
12.5 ... Die if-Anweisung ... 176
12.6 ... »while«-Schleife ... 179
12.7 ... »do-while«-Schleife ... 180
12.8 ... »for«-Schleife ... 181
12.9 ... Die bereichsbasierte »for«-Schleife ... 182
12.10 ... Die »switch«-Verzweigung ... 183
12.11 ... »break«-Anweisung ... 187
12.12 ... Die »continue«-Anweisung ... 188
12.13 ... Die »return«-Anweisung ... 189
12.14 ... Die »goto«-Anweisung ... 190
12.15 ... »try-catch«-Block und »throw« ... 192
12.16 ... Zusammenfassung ... 193
12.17 ... Aufgaben ... 193
13. Ausdrücke im Detail ... 196
13.1 ... Berechnungen und Seiteneffekte ... 197
13.2 ... Arten von Ausdrücken ... 198
13.3 ... Literale ... 199
13.4 ... Bezeichner ... 200
13.5 ... Klammern ... 201
13.6 ... Funktionsaufruf und Index-Zugriff ... 201
13.7 ... Zuweisung ... 201
13.8 ... Typumwandlung ... 203
13.9 ... Aufgaben ... 204
14. Fehlerbehandlung ... 205
14.1 ... Fehlerbehandlung mit Rückgabewerten ... 207
14.2 ... Was ist eine Ausnahme? ... 210
14.3 ... Kleinere Fehlerbehandlungen ... 213
14.4 ... Weiterwerfen -- »rethrow« ... 213
14.5 ... Die Reihenfolge im »catch« ... 214
14.6 ... Typen für Exceptions ... 216
14.7 ... Wenn eine Exception aus »main« herausfällt ... 217
14.8 ... Aufgaben ... 217
15. Programmiertechnik, 2. Dan: Modularisierung ... 219
15.1 ... Programm, Bibliothek, Objektdatei ... 219
15.2 ... Bausteine ... 220
15.3 ... Trennen der Funktionalitäten ... 221
TEIL III Datenstrukturen ... 223
16. Erste eigene Datentypen ... 225
16.1 ... Initialisierung ... 226
16.2 ... Rückgabe eigener Typen ... 227
16.3 ... Methoden statt Funktionen ... 228
16.4 ... Das bessere »drucke« ... 231
16.5 ... Eine Ausgabe wie jede andere ... 232
16.6 ... Methoden inline definieren ... 233
16.7 ... Implementierung und Definition trennen ... 234
16.8 ... Initialisierung per Konstruktor ... 235
16.9 ... Struktur oder Klasse? ... 241
16.10 ... Zusammenfassung ... 245
16.11 ... Aufgaben ... 245
17. Verwendung eigener Datentypen ... 248
17.1 ... Klassen als Werte verwenden ... 251
17.2 ... Konstruktoren nutzen ... 253
17.3 ... Typumwandlungen ... 254
17.4 ... Kapseln und entkapseln ... 256
17.5 ... Typen lokal einen Namen geben ... 260
17.6 ... Typdeduktion mit »auto« ... 263
17.7 ... Eigene Klassen in Standardcontainern ... 266
17.8 ... Aufgaben ... 268
18. Namespace und Static ... 270
18.1 ... Der Namensraum »std« ... 270
18.2 ... Anonymer Namensraum ... 274
18.3 ... »static« macht lokal ... 275
18.4 ... »static« teilt gern ... 276
18.5 ... »static« macht dauerhaft ... 279
18.6 ... Zusammenfassung ... 281
18.7 ... Aufgaben ... 281
19. Const ... 284
19.1 ... Const-Parameter ... 285
19.2 ... Const-Methoden ... 286
19.3 ... Const-Variablen ... 288
19.4 ... Const-Rückgaben ... 289
19.5 ... Const-Korrektheit ... 296
19.6 ... Zusammenfassung ... 297
19.7 ... Aufgaben ... 298
20. Vererbung ... 300
20.1 ... Beziehungen ... 301
20.2 ... Vererbung in C++ ... 303
20.3 ... Hat-ein versus ist-ein ... 304
20.4 ... Gemeinsamkeiten finden ... 304
20.5 ... Abgeleitete Typen erweitern ... 307
20.6 ... Methoden überschreiben ... 308
20.7 ... Wie Methoden funktionieren ... 309
20.8 ... Virtuelle Methoden ... 310
20.9 ... Konstruktoren in Klassenhierarchien ... 312
20.10 ... Typumwandlung in Klassenhierarchien ... 314
20.11 ... Wann virtuell? ... 315
20.12 ... Andere Designs zur Erweiterbarkeit ... 317
20.13 ... Aufgaben ... 318
21. Der Lebenszyklus von Klassen ... 321
21.1 ... Erzeugung und Zerstörung ... 322
21.2 ... Temporary: Kurzlebige Werte ... 324
21.3 ... Der Destruktor zum Konstruktor ... 325
21.4 ... Yoda-Bedingung ... 330
21.5 ... Konstruktion, Destruktion und Exceptions ... 331
21.6 ... Kopieren ... 333
21.7 ... Zuweisungsoperator ... 335
21.8 ... Streichen von Methoden ... 339
21.9 ... Verschiebeoperationen ... 340
21.10 ... Operatoren ... 344
21.11 ... Eigene Operatoren in einem Datentyp ... 348
21.12 ... Besondere Klassenformen ... 353
21.13 ... Aufgaben ... 356
22. Programmiertechnik, 3. Dan: Die Nuller-Regel ... 359
22.1 ... Die großen Fünf ... 359
22.2 ... Hilfskonstrukt per Verbot ... 360
22.3 ... Die Nullerregel und ihr Einsatz ... 361
22.4 ... Ausnahmen von der Nullerregel ... 362
TEIL IV Fortgeschrittene Themen ... 365
23. Zeiger ... 367
23.1 ... Adressen ... 368
23.2 ... Zeiger ... 369
23.3 ... Heapspeicher und Stapelspeicher ... 372
23.4 ... Smarte Pointer ... 376
23.5 ... Rohe Zeiger ... 385
23.6 ... C-Arrays ... 390
23.7 ... Iteratoren ... 396
23.8 ... Zeiger im Container ... 400
23.9 ... Die Ausnahme: Wann das Wegräumen nicht nötig ist ... 400
23.10 ... Aufgaben ... 402
24. Makros ... 405
24.1 ... Der Präprozessor ... 406
24.2 ... Vorsicht vor fehlenden Klammern ... 410
24.3 ... Vorsicht vor Mehrfachausführung ... 410
24.4 ... Typvariabilität von Makros ... 411
24.5 ... Zusammenfassung ... 413
24.6 ... Aufgaben ... 414
25. Schnittstelle zu C ... 416
25.1 ... Mit Bibliotheken arbeiten ... 417
25.2 ... C-Header ... 418
25.3 ... C-Ressourcen ... 421
25.4 ... »void«-Pointer ... 422
25.5 ... Daten lesen ... 423
25.6 ... Das Hauptprogramm ... 424
25.7 ... Zusammenfassung ... 425
25.8 ... Aufgaben ... 425
26. Template-Funktionen ... 427
26.1 ... Überladung ... 428
26.2 ... Ein Typ als Parameter ... 429
26.3 ... Funktionskörper einer Template-Funktion ... 429
26.4 ... Zahlen als Template-Parameter ... 431
26.5 ... Viele Funktionen ... 432
26.6 ... Parameter mit Extras ... 432
26.7 ... Template-Methoden sind auch nur Funktionen ... 435
26.8 ... Template-Funktionen in der Standardbibliothek ... 436
26.9 ... Iteratoren statt Container als Template-Parameter ... 437
26.10 ... Beispiel: Informationen über Zahlen ... 439
26.11 ... Aufgaben ... 440
27. Eine Klasse als Funktion ... 442
27.1 ... Werte für einen »function«-Parameter ... 443
27.2 ... C-Funktionspointer ... 444
27.3 ... Die etwas andere Funktion ... 445
27.4 ... Praktische Funktoren ... 448
27.5 ... Algorithmen mit Funktoren ... 450
27.6 ... Anonyme Funktionen alias Lambda-Ausdrücke ... 451
27.7 ... Aufgaben ... 455
Anhang ... 457
A ... C++11-Besonderheiten ... 458
B ... Operator-Präzedenzen ... 470
C ... Lösungen ... 472
Index ... 515
Vorwort ... 20
TEIL I Erste Schritte ... 23
1. Über dieses Buch ... 25
1.1 ... Der C++-Standard ... 26
1.2 ... Verwendete Formatierungen ... 27
2. Vom Problem zum Programm ... 29
2.1 ... Was ist Programmieren? ... 30
2.2 ... Softwareentwicklungsmethoden ... 30
2.3 ... Entwurfsmuster ... 32
2.4 ... Algorithmen ... 33
2.5 ... Ressourcen ... 34
3. Programmieren in C++ ... 36
3.1 ... Übersetzen ... 37
3.2 ... Aktuelle Compiler ... 37
3.3 ... Entwicklungsumgebungen ... 39
3.4 ... Die Kommandozeile unter Ubuntu ... 41
3.5 ... Die IDE »Microsoft Visual Studio Express« unter Windows ... 44
3.6 ... Schneller ... 47
3.7 ... Aufgaben ... 47
4. Ein ganz schneller Überblick ... 49
4.1 ... Kommentare ... 50
4.2 ... Die »include«-Direktive ... 50
4.3 ... Die Standardbibliothek ... 51
4.4 ... Die Funktion »main()« ... 51
4.5 ... Typen ... 51
4.6 ... Variablen ... 52
4.7 ... Initialisierung ... 52
4.8 ... Ausgabe auf der Konsole ... 53
4.9 ... Anweisungen ... 53
4.10 ... Aufgaben ... 54
5. Ohne Eile erklärt ... 56
5.1 ... Leerräume, Bezeichner und Token ... 58
5.2 ... Kommentare ... 59
5.3 ... Funktionen und Argumente ... 60
5.4 ... Seiteneffekt-Operatoren ... 61
5.5 ... Die »main«-Funktion ... 62
5.6 ... Anweisungen ... 64
5.7 ... Ausdrücke ... 66
5.8 ... Zuweisungen ... 68
5.9 ... Typen ... 69
5.10 ... Variablen -- Deklaration, Definition und Initialisierung ... 74
5.11 ... Details zur »include«-Direktive ... 75
5.12 ... Eingabe und Ausgabe ... 76
5.13 ... Der Namensraum »std« ... 77
5.14 ... Aufgaben ... 79
6. Programmiertechnik, 1. Dan: Lesbarer Code ... 81
6.1 ... Kommentare ... 81
6.2 ... Dokumentation ... 82
6.3 ... Einrückungen und Zeilenlänge ... 83
6.4 ... Zeilen pro Funktion und Datei ... 84
6.5 ... Klammern und Leerzeichen ... 84
6.6 ... Namen ... 86
TEIL II Die Elemente von C++ ... 87
7. Operatoren ... 89
7.1 ... Operatoren und Operanden ... 90
7.2 ... Überblick über Operatoren ... 90
7.3 ... Arithmetische Operatoren ... 91
7.4 ... Bitweise Arithmetik ... 92
7.5 ... Zuweisungsoperatoren ... 93
7.6 ... Post- und Präinkrement sowie Post- und Prädekrement ... 94
7.7 ... Relationale Operatoren ... 95
7.8 ... Logische Operatoren ... 95
7.9 ... Pointer- und Dereferenzierungsoperatoren ... 97
7.10 ... Besondere Operatoren ... 97
7.11 ... Funktionsähnliche Operatoren ... 99
7.12 ... Operatorreihenfolge ... 100
7.13 ... Aufgaben ... 101
8. Eingebaute Typen ... 103
8.1 ... Eingebaute Datentypen ... 105
8.2 ... Eingebaute Datentypen initialisieren ... 105
8.3 ... Ein schneller Überblick ... 106
8.4 ... Ganzzahlen ... 107
8.5 ... Wahrheitswerte ... 118
8.6 ... Zeichentypen ... 119
8.7 ... Aufgaben ... 122
9. Strings und Streams ... 124
9.1 ... Der Zeichenkettentyp »string« ... 124
9.2 ... Streams ... 129
9.3 ... Eingabe- und Ausgabeoperatoren ... 130
9.4 ... Aufgaben ... 134
10. Behälter und Zeiger ... 135
10.1 ... Parametrisierte Typen ... 136
10.2 ... Die einfachen Sequenzcontainer ... 136
10.3 ... Weitere Container ... 141
10.4 ... Container-Gemeinsamkeiten ... 144
10.5 ... Algorithmen ... 145
10.6 ... Zeiger und C-Arrays ... 146
10.7 ... Aufgaben ... 147
11. Funktionen ... 148
11.1 ... Deklaration und Definition einer Funktion ... 149
11.2 ... Funktionstyp ... 150
11.3 ... Funktionen verwenden ... 150
11.4 ... Eine Funktion definieren ... 151
11.5 ... Mehr zu Parametern ... 152
11.6 ... Funktionskörper ... 156
11.7 ... Parameter umwandeln ... 158
11.8 ... Funktionen überladen ... 160
11.9 ... Default-Parameter ... 162
11.10 ... Beliebig viele Argumente ... 163
11.11 ... Alternative Schreibweise zur Funktionsdeklaration ... 164
11.12 ... Spezialitäten ... 165
11.13 ... Aufgaben ... 167
12. Anweisungen im Detail ... 169
12.1 ... Anweisungsblock ... 171
12.2 ... Die leere Anweisung ... 174
12.3 ... Deklarationsanweisung ... 175
12.4 ... Ausdrucksanweisung ... 176
12.5 ... Die if-Anweisung ... 176
12.6 ... »while«-Schleife ... 179
12.7 ... »do-while«-Schleife ... 180
12.8 ... »for«-Schleife ... 181
12.9 ... Die bereichsbasierte »for«-Schleife ... 182
12.10 ... Die »switch«-Verzweigung ... 183
12.11 ... »break«-Anweisung ... 187
12.12 ... Die »continue«-Anweisung ... 188
12.13 ... Die »return«-Anweisung ... 189
12.14 ... Die »goto«-Anweisung ... 190
12.15 ... »try-catch«-Block und »throw« ... 192
12.16 ... Zusammenfassung ... 193
12.17 ... Aufgaben ... 193
13. Ausdrücke im Detail ... 196
13.1 ... Berechnungen und Seiteneffekte ... 197
13.2 ... Arten von Ausdrücken ... 198
13.3 ... Literale ... 199
13.4 ... Bezeichner ... 200
13.5 ... Klammern ... 201
13.6 ... Funktionsaufruf und Index-Zugriff ... 201
13.7 ... Zuweisung ... 201
13.8 ... Typumwandlung ... 203
13.9 ... Aufgaben ... 204
14. Fehlerbehandlung ... 205
14.1 ... Fehlerbehandlung mit Rückgabewerten ... 207
14.2 ... Was ist eine Ausnahme? ... 210
14.3 ... Kleinere Fehlerbehandlungen ... 213
14.4 ... Weiterwerfen -- »rethrow« ... 213
14.5 ... Die Reihenfolge im »catch« ... 214
14.6 ... Typen für Exceptions ... 216
14.7 ... Wenn eine Exception aus »main« herausfällt ... 217
14.8 ... Aufgaben ... 217
15. Programmiertechnik, 2. Dan: Modularisierung ... 219
15.1 ... Programm, Bibliothek, Objektdatei ... 219
15.2 ... Bausteine ... 220
15.3 ... Trennen der Funktionalitäten ... 221
TEIL III Datenstrukturen ... 223
16. Erste eigene Datentypen ... 225
16.1 ... Initialisierung ... 226
16.2 ... Rückgabe eigener Typen ... 227
16.3 ... Methoden statt Funktionen ... 228
16.4 ... Das bessere »drucke« ... 231
16.5 ... Eine Ausgabe wie jede andere ... 232
16.6 ... Methoden inline definieren ... 233
16.7 ... Implementierung und Definition trennen ... 234
16.8 ... Initialisierung per Konstruktor ... 235
16.9 ... Struktur oder Klasse? ... 241
16.10 ... Zusammenfassung ... 245
16.11 ... Aufgaben ... 245
17. Verwendung eigener Datentypen ... 248
17.1 ... Klassen als Werte verwenden ... 251
17.2 ... Konstruktoren nutzen ... 253
17.3 ... Typumwandlungen ... 254
17.4 ... Kapseln und entkapseln ... 256
17.5 ... Typen lokal einen Namen geben ... 260
17.6 ... Typdeduktion mit »auto« ... 263
17.7 ... Eigene Klassen in Standardcontainern ... 266
17.8 ... Aufgaben ... 268
18. Namespace und Static ... 270
18.1 ... Der Namensraum »std« ... 270
18.2 ... Anonymer Namensraum ... 274
18.3 ... »static« macht lokal ... 275
18.4 ... »static« teilt gern ... 276
18.5 ... »static« macht dauerhaft ... 279
18.6 ... Zusammenfassung ... 281
18.7 ... Aufgaben ... 281
19. Const ... 284
19.1 ... Const-Parameter ... 285
19.2 ... Const-Methoden ... 286
19.3 ... Const-Variablen ... 288
19.4 ... Const-Rückgaben ... 289
19.5 ... Const-Korrektheit ... 296
19.6 ... Zusammenfassung ... 297
19.7 ... Aufgaben ... 298
20. Vererbung ... 300
20.1 ... Beziehungen ... 301
20.2 ... Vererbung in C++ ... 303
20.3 ... Hat-ein versus ist-ein ... 304
20.4 ... Gemeinsamkeiten finden ... 304
20.5 ... Abgeleitete Typen erweitern ... 307
20.6 ... Methoden überschreiben ... 308
20.7 ... Wie Methoden funktionieren ... 309
20.8 ... Virtuelle Methoden ... 310
20.9 ... Konstruktoren in Klassenhierarchien ... 312
20.10 ... Typumwandlung in Klassenhierarchien ... 314
20.11 ... Wann virtuell? ... 315
20.12 ... Andere Designs zur Erweiterbarkeit ... 317
20.13 ... Aufgaben ... 318
21. Der Lebenszyklus von Klassen ... 321
21.1 ... Erzeugung und Zerstörung ... 322
21.2 ... Temporary: Kurzlebige Werte ... 324
21.3 ... Der Destruktor zum Konstruktor ... 325
21.4 ... Yoda-Bedingung ... 330
21.5 ... Konstruktion, Destruktion und Exceptions ... 331
21.6 ... Kopieren ... 333
21.7 ... Zuweisungsoperator ... 335
21.8 ... Streichen von Methoden ... 339
21.9 ... Verschiebeoperationen ... 340
21.10 ... Operatoren ... 344
21.11 ... Eigene Operatoren in einem Datentyp ... 348
21.12 ... Besondere Klassenformen ... 353
21.13 ... Aufgaben ... 356
22. Programmiertechnik, 3. Dan: Die Nuller-Regel ... 359
22.1 ... Die großen Fünf ... 359
22.2 ... Hilfskonstrukt per Verbot ... 360
22.3 ... Die Nullerregel und ihr Einsatz ... 361
22.4 ... Ausnahmen von der Nullerregel ... 362
TEIL IV Fortgeschrittene Themen ... 365
23. Zeiger ... 367
23.1 ... Adressen ... 368
23.2 ... Zeiger ... 369
23.3 ... Heapspeicher und Stapelspeicher ... 372
23.4 ... Smarte Pointer ... 376
23.5 ... Rohe Zeiger ... 385
23.6 ... C-Arrays ... 390
23.7 ... Iteratoren ... 396
23.8 ... Zeiger im Container ... 400
23.9 ... Die Ausnahme: Wann das Wegräumen nicht nötig ist ... 400
23.10 ... Aufgaben ... 402
24. Makros ... 405
24.1 ... Der Präprozessor ... 406
24.2 ... Vorsicht vor fehlenden Klammern ... 410
24.3 ... Vorsicht vor Mehrfachausführung ... 410
24.4 ... Typvariabilität von Makros ... 411
24.5 ... Zusammenfassung ... 413
24.6 ... Aufgaben ... 414
25. Schnittstelle zu C ... 416
25.1 ... Mit Bibliotheken arbeiten ... 417
25.2 ... C-Header ... 418
25.3 ... C-Ressourcen ... 421
25.4 ... »void«-Pointer ... 422
25.5 ... Daten lesen ... 423
25.6 ... Das Hauptprogramm ... 424
25.7 ... Zusammenfassung ... 425
25.8 ... Aufgaben ... 425
26. Template-Funktionen ... 427
26.1 ... Überladung ... 428
26.2 ... Ein Typ als Parameter ... 429
26.3 ... Funktionskörper einer Template-Funktion ... 429
26.4 ... Zahlen als Template-Parameter ... 431
26.5 ... Viele Funktionen ... 432
26.6 ... Parameter mit Extras ... 432
26.7 ... Template-Methoden sind auch nur Funktionen ... 435
26.8 ... Template-Funktionen in der Standardbibliothek ... 436
26.9 ... Iteratoren statt Container als Template-Parameter ... 437
26.10 ... Beispiel: Informationen über Zahlen ... 439
26.11 ... Aufgaben ... 440
27. Eine Klasse als Funktion ... 442
27.1 ... Werte für einen »function«-Parameter ... 443
27.2 ... C-Funktionspointer ... 444
27.3 ... Die etwas andere Funktion ... 445
27.4 ... Praktische Funktoren ... 448
27.5 ... Algorithmen mit Funktoren ... 450
27.6 ... Anonyme Funktionen alias Lambda-Ausdrücke ... 451
27.7 ... Aufgaben ... 455
Anhang ... 457
A ... C++11-Besonderheiten ... 458
B ... Operator-Präzedenzen ... 470
C ... Lösungen ... 472
Index ... 515