- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Dieser Grundkurs ist genau das Richtige für alle, die einen schnellen Einstieg in die Programmiersprache C++ und einen Überblick über die Grundlagen ohne viel Beiwerk suchen. Ausführlich und jederzeit verständlich erklären Martin Guddat und Jürgen Wolf alles, was notwendig ist, damit Sie modernes C++ lernen und objektorientiert programmieren können. Von der ersten Seite an geht es sofort los mit einfachen Programmen bis hin zur Entwicklung komplexerer Anwendungen. Übungen am Ende jedes Kapitels helfen Einsteigern und vor allem Selbstlernern beim Verstehen der Sprache. Die kompakte Darstellung…mehr
Andere Kunden interessierten sich auch für
- Dirk W. HoffmannTheoretische Informatik42,99 €
- Thomas TheisEinstieg in C# mit Visual Studio 202229,90 €
- Sebastian DörnJava lernen in abgeschlossenen Lerneinheiten32,99 €
- Michael WeigendPython 349,99 €
- Daniel J. BarrettProduktiv auf der Linux-Kommandozeile26,90 €
- Michael KoflerJava14,90 €
- Hauke FehrLet's code Python24,90 €
-
-
-
-
-
-
-
-
-
-
-
-
-
Dieser Grundkurs ist genau das Richtige für alle, die einen schnellen Einstieg in die Programmiersprache C++ und einen Überblick über die Grundlagen ohne viel Beiwerk suchen. Ausführlich und jederzeit verständlich erklären Martin Guddat und Jürgen Wolf alles, was notwendig ist, damit Sie modernes C++ lernen und objektorientiert programmieren können.
Von der ersten Seite an geht es sofort los mit einfachen Programmen bis hin zur Entwicklung komplexerer Anwendungen. Übungen am Ende jedes Kapitels helfen Einsteigern und vor allem Selbstlernern beim Verstehen der Sprache. Die kompakte Darstellung macht das Buch zu einer unverzichtbaren Referenz für die Arbeit mit C++.
Diese vierte Auflage wurde umfassend überarbeitet und modernisiert.
Das Buch eignet sich hervorragend als Begleiter für das Studium der Informatik und anderer technischer Fächer.
Aus dem Inhalt:
Das erste Programm in C++BasisdatentypenTypumwandlungVerzweigungenSchleifenFunktionenPräprozessor-DirektivenArrays und Zeichenketten (Strings)Zeiger (Pointer)Dynamische Speicherobjekte und StrukturenNamensräumeModulare ProgrammierungKlassen und ObjekteVererbungOperatoren überladenTemplatesExceptionhandling (Fehlerbehandlung)Modernes C++ bis C++20
Die Fachpresse zur Vorauflage:
LINUX MAGAZIN: »Der C++-Grundkurs überzeugt durch eingängige Erklärungen aller wichtigen Eigenschaften der Programmiersprache in einem kompakten Format.«
Von der ersten Seite an geht es sofort los mit einfachen Programmen bis hin zur Entwicklung komplexerer Anwendungen. Übungen am Ende jedes Kapitels helfen Einsteigern und vor allem Selbstlernern beim Verstehen der Sprache. Die kompakte Darstellung macht das Buch zu einer unverzichtbaren Referenz für die Arbeit mit C++.
Diese vierte Auflage wurde umfassend überarbeitet und modernisiert.
Das Buch eignet sich hervorragend als Begleiter für das Studium der Informatik und anderer technischer Fächer.
Aus dem Inhalt:
Das erste Programm in C++BasisdatentypenTypumwandlungVerzweigungenSchleifenFunktionenPräprozessor-DirektivenArrays und Zeichenketten (Strings)Zeiger (Pointer)Dynamische Speicherobjekte und StrukturenNamensräumeModulare ProgrammierungKlassen und ObjekteVererbungOperatoren überladenTemplatesExceptionhandling (Fehlerbehandlung)Modernes C++ bis C++20
Die Fachpresse zur Vorauflage:
LINUX MAGAZIN: »Der C++-Grundkurs überzeugt durch eingängige Erklärungen aller wichtigen Eigenschaften der Programmiersprache in einem kompakten Format.«
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/07636
- 4. Aufl.
- Seitenzahl: 495
- Erscheinungstermin: 23. Dezember 2021
- Deutsch
- Abmessung: 190mm x 129mm x 30mm
- Gewicht: 543g
- ISBN-13: 9783836276368
- ISBN-10: 3836276364
- Artikelnr.: 62589038
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.rheinwerk-verlag.de
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- Artikelnr. des Verlages: 459/07636
- 4. Aufl.
- Seitenzahl: 495
- Erscheinungstermin: 23. Dezember 2021
- Deutsch
- Abmessung: 190mm x 129mm x 30mm
- Gewicht: 543g
- ISBN-13: 9783836276368
- ISBN-10: 3836276364
- Artikelnr.: 62589038
- Herstellerkennzeichnung
- Rheinwerk Publishing Inc.
- 2 Heritage Drive
- 11201 Quincy, MA, US
- Info@rheinwerk-verlag.de
- www.rheinwerk-verlag.de
1. Einstieg in die Welt von C++ ... 17
1.1 ... Der C++-Standard ... 17
1.2 ... Die nötigen Werkzeuge für C++ ... 18
1.3 ... Übersetzen mit g++ und clang++ ... 22
1.4 ... Übersetzen mit einer Entwicklungsumgebung ... 24
1.5 ... Listings zum Buch ... 28
1.6 ... Kontrollfragen und Aufgaben im Buch ... 28
1.7 ... Aufgabe ... 28
2. Erste Schritte in C++ ... 30
2.1 ... Das erste Programm in C++ ... 30
2.2 ... Anweisungen und Ausdrücke ... 32
2.3 ... Die Standard-Eingabe- und Ausgabestreams ... 33
2.4 ... Einige Begriffe zu C++ ... 38
2.5 ... Kontrollfragen und Aufgaben ... 40
3. Die eingebauten C++-Basisdatentypen ... 41
3.1 ... Variablen ... 41
3.2 ... Definition und Deklaration von Variablen ... 42
3.3 ... Initialisierung und Zuweisung von Werten ... 43
3.4 ... Ganzzahltypen ... 45
3.5 ... Ganzzahldatentyp für Zeichen ... 53
3.6 ... Fließkommazahlentypen ... 62
3.7 ... Der »auto«-Typ ... 64
3.8 ... Konstanten ... 66
3.9 ... Die Byte-Größe mit dem »sizeof«-Operator ... 67
3.10 ... Limits für die Basisdatentypen ... 68
3.11 ... Kontrollfragen und Aufgaben ... 71
4. Arbeiten mit den eingebauten Typen ... 72
4.1 ... Arithmetische Operatoren ... 72
4.2 ... Ungenaue Fließkommazahlen ... 79
4.3 ... Typumwandlung ... 81
4.4 ... Kontrollfragen und Aufgaben ... 87
5. Kontrollstrukturen ... 88
5.1 ... Der eingebaute Datentyp »bool« ... 88
5.2 ... Vergleichsoperatoren ... 89
5.3 ... Bedingte Anweisung mit »if« ... 91
5.4 ... Anweisungsblock für Kontrollstrukturen ... 93
5.5 ... Alternative »else«-Verzweigung ... 94
5.6 ... Bedingte Anweisung mit Initialisierung ... 95
5.7 ... Mehrfache Verzweigung ... 96
5.8 ... Der Bedingungsoperator »?:« ... 99
5.9 ... Logische Operatoren ... 100
5.10 ... Die Fallunterscheidung -- »switch« ... 102
5.11 ... Die kopfgesteuerte »while«-Schleife ... 105
5.12 ... Die fußgesteuerte »do while«-Schleife ... 107
5.13 ... Die Zählschleife »for« ... 108
5.14 ... Kontrollierte Sprunganweisungen ... 112
5.15 ... Kontrollfragen und Aufgaben ... 115
6. Arrays und Strings ... 116
6.1 ... Arrays ... 116
6.2 ... Strings in C++ ... 130
6.3 ... Kontrollfragen und Aufgaben ... 136
7. Referenzen und Zeiger ... 137
7.1 ... Referenzen ... 137
7.2 ... Zeiger ... 139
7.3 ... Kontrollfragen und Aufgaben ... 148
8. Funktionen ... 150
8.1 ... Grundlage zu den Funktionen ... 150
8.2 ... Referenzen als Parameter und Rückgabe ... 171
8.3 ... Zeiger als Parameter und Rückgabewert ... 178
8.4 ... Übergabe großer Elemente als Funktionsparameter ... 179
8.5 ... C-Arrays oder C-Strings als Funktionsparameter ... 181
8.6 ... Kontrollfragen und Aufgaben ... 182
9. Modularisierung und Präprozessor ... 184
9.1 ... Präprozessor-Direktiven ... 184
9.2 ... Modularisierung ... 189
9.3 ... Namensräume ... 195
9.4 ... Spezifizierer und Qualifikatoren ... 206
9.5 ... Kontrollfragen und Aufgaben ... 213
10. Strukturen, Aufzählungen und dynamische Speicherobjekte ... 215
10.1 ... Erste eigene Datentypen mit Strukturen ... 215
10.2 ... Aufzählungstyp »enum« ... 223
10.3 ... Eigene Namen mit »using« ... 225
10.4 ... Dynamische Speicherobjekte ... 226
10.5 ... Kontrollfragen und Aufgaben ... 236
11. Klassen ... 237
11.1 ... Klassen ... 237
11.2 ... Konstruktoren ... 251
11.3 ... Destruktoren ... 268
11.4 ... Weitere Formen von Methoden ... 273
11.5 ... Kontrollfragen und Aufgaben ... 281
12. Objekte und Klassenelemente ... 283
12.1 ... Objekt als Parameter ... 283
12.2 ... Freundfunktionen (»friend«) ... 288
12.3 ... Objekte einer Klasse als Rückgabewerte ... 290
12.4 ... Arrays von Objekten ... 296
12.5 ... Dynamische Objekte ... 297
12.6 ... Klassenobjekte als Klassenattribute ... 299
12.7 ... Containerklasse als Klassenattribut ... 304
12.8 ... Smart Pointer als Klassenattribut ... 307
12.9 ... Statische und konstante Klassenelemente ... 311
12.10 ... Die Nullregel (Rule of Zero) ... 318
12.11 ... Kontrollfragen und Aufgaben ... 322
13. Operatoren überladen ... 323
13.1 ... Das Schlüsselwort »operator« ... 325
13.2 ... Zweistellige (arithmetische) Operatoren überladen ... 326
13.3 ... Einstellige Operatoren überladen ... 333
13.4 ... Den Zuweisungsoperator überladen ... 337
13.5 ... Ausgabe- und Eingabeoperatoren überladen ... 342
13.6 ... Vergleichsoperatoren ... 345
13.7 ... Weitere Operatorüberladungen ... 348
13.8 ... Konvertierungsoperatoren ... 348
13.9 ... Kontrollfragen und Aufgaben ... 352
14. Vererbung (Abgeleitete Klassen) ... 354
14.1 ... Die Vorbereitung ... 355
14.2 ... Das Ableiten einer Klasse ... 357
14.3 ... Kontrollfragen und Aufgaben ... 375
15. Templates ... 376
15.1 ... Funktions-Templates ... 376
15.2 ... Klassen-Templates ... 385
15.3 ... Templates der Standardbibliothek ... 390
15.4 ... Kontrollfragen und Aufgaben ... 397
16. Ausnahmebehandlung (Fehlerbehandlung) ... 399
16.1 ... Eine Ausnahme auslösen ... 401
16.2 ... Ausnahme auffangen und behandeln ... 402
16.3 ... Ausnahmeklassen (Fehlerklassen) ... 412
16.4 ... Standardausnahmen ... 415
16.5 ... Systemausnahmen ... 420
16.6 ... Kontrollfragen ... 421
17. Ein-/Ausgabestreams für Dateien ... 422
17.1 ... Der Umgang mit Dateien in C++ ... 422
17.2 ... Verschiedene Streams für Dateien ... 422
17.3 ... Datei öffnen und schließen ... 423
17.4 ... Kontrollfragen und Aufgaben ... 434
18. Weitere Sprachelemente und die Bibliotheken ... 435
18.1 ... Weitere Sprachelemente ... 435
18.2 ... Smart Pointer ... 442
18.3 ... Elemente der Standardbibliothek ... 452
18.4 ... Die Zeitbibliothek ... 458
18.5 ... Die »ratio«-Bibliothek ... 463
18.6 ... Multithreading ... 464
Lösungen der Übungsaufgaben ... 466
Index ... 489
1.1 ... Der C++-Standard ... 17
1.2 ... Die nötigen Werkzeuge für C++ ... 18
1.3 ... Übersetzen mit g++ und clang++ ... 22
1.4 ... Übersetzen mit einer Entwicklungsumgebung ... 24
1.5 ... Listings zum Buch ... 28
1.6 ... Kontrollfragen und Aufgaben im Buch ... 28
1.7 ... Aufgabe ... 28
2. Erste Schritte in C++ ... 30
2.1 ... Das erste Programm in C++ ... 30
2.2 ... Anweisungen und Ausdrücke ... 32
2.3 ... Die Standard-Eingabe- und Ausgabestreams ... 33
2.4 ... Einige Begriffe zu C++ ... 38
2.5 ... Kontrollfragen und Aufgaben ... 40
3. Die eingebauten C++-Basisdatentypen ... 41
3.1 ... Variablen ... 41
3.2 ... Definition und Deklaration von Variablen ... 42
3.3 ... Initialisierung und Zuweisung von Werten ... 43
3.4 ... Ganzzahltypen ... 45
3.5 ... Ganzzahldatentyp für Zeichen ... 53
3.6 ... Fließkommazahlentypen ... 62
3.7 ... Der »auto«-Typ ... 64
3.8 ... Konstanten ... 66
3.9 ... Die Byte-Größe mit dem »sizeof«-Operator ... 67
3.10 ... Limits für die Basisdatentypen ... 68
3.11 ... Kontrollfragen und Aufgaben ... 71
4. Arbeiten mit den eingebauten Typen ... 72
4.1 ... Arithmetische Operatoren ... 72
4.2 ... Ungenaue Fließkommazahlen ... 79
4.3 ... Typumwandlung ... 81
4.4 ... Kontrollfragen und Aufgaben ... 87
5. Kontrollstrukturen ... 88
5.1 ... Der eingebaute Datentyp »bool« ... 88
5.2 ... Vergleichsoperatoren ... 89
5.3 ... Bedingte Anweisung mit »if« ... 91
5.4 ... Anweisungsblock für Kontrollstrukturen ... 93
5.5 ... Alternative »else«-Verzweigung ... 94
5.6 ... Bedingte Anweisung mit Initialisierung ... 95
5.7 ... Mehrfache Verzweigung ... 96
5.8 ... Der Bedingungsoperator »?:« ... 99
5.9 ... Logische Operatoren ... 100
5.10 ... Die Fallunterscheidung -- »switch« ... 102
5.11 ... Die kopfgesteuerte »while«-Schleife ... 105
5.12 ... Die fußgesteuerte »do while«-Schleife ... 107
5.13 ... Die Zählschleife »for« ... 108
5.14 ... Kontrollierte Sprunganweisungen ... 112
5.15 ... Kontrollfragen und Aufgaben ... 115
6. Arrays und Strings ... 116
6.1 ... Arrays ... 116
6.2 ... Strings in C++ ... 130
6.3 ... Kontrollfragen und Aufgaben ... 136
7. Referenzen und Zeiger ... 137
7.1 ... Referenzen ... 137
7.2 ... Zeiger ... 139
7.3 ... Kontrollfragen und Aufgaben ... 148
8. Funktionen ... 150
8.1 ... Grundlage zu den Funktionen ... 150
8.2 ... Referenzen als Parameter und Rückgabe ... 171
8.3 ... Zeiger als Parameter und Rückgabewert ... 178
8.4 ... Übergabe großer Elemente als Funktionsparameter ... 179
8.5 ... C-Arrays oder C-Strings als Funktionsparameter ... 181
8.6 ... Kontrollfragen und Aufgaben ... 182
9. Modularisierung und Präprozessor ... 184
9.1 ... Präprozessor-Direktiven ... 184
9.2 ... Modularisierung ... 189
9.3 ... Namensräume ... 195
9.4 ... Spezifizierer und Qualifikatoren ... 206
9.5 ... Kontrollfragen und Aufgaben ... 213
10. Strukturen, Aufzählungen und dynamische Speicherobjekte ... 215
10.1 ... Erste eigene Datentypen mit Strukturen ... 215
10.2 ... Aufzählungstyp »enum« ... 223
10.3 ... Eigene Namen mit »using« ... 225
10.4 ... Dynamische Speicherobjekte ... 226
10.5 ... Kontrollfragen und Aufgaben ... 236
11. Klassen ... 237
11.1 ... Klassen ... 237
11.2 ... Konstruktoren ... 251
11.3 ... Destruktoren ... 268
11.4 ... Weitere Formen von Methoden ... 273
11.5 ... Kontrollfragen und Aufgaben ... 281
12. Objekte und Klassenelemente ... 283
12.1 ... Objekt als Parameter ... 283
12.2 ... Freundfunktionen (»friend«) ... 288
12.3 ... Objekte einer Klasse als Rückgabewerte ... 290
12.4 ... Arrays von Objekten ... 296
12.5 ... Dynamische Objekte ... 297
12.6 ... Klassenobjekte als Klassenattribute ... 299
12.7 ... Containerklasse als Klassenattribut ... 304
12.8 ... Smart Pointer als Klassenattribut ... 307
12.9 ... Statische und konstante Klassenelemente ... 311
12.10 ... Die Nullregel (Rule of Zero) ... 318
12.11 ... Kontrollfragen und Aufgaben ... 322
13. Operatoren überladen ... 323
13.1 ... Das Schlüsselwort »operator« ... 325
13.2 ... Zweistellige (arithmetische) Operatoren überladen ... 326
13.3 ... Einstellige Operatoren überladen ... 333
13.4 ... Den Zuweisungsoperator überladen ... 337
13.5 ... Ausgabe- und Eingabeoperatoren überladen ... 342
13.6 ... Vergleichsoperatoren ... 345
13.7 ... Weitere Operatorüberladungen ... 348
13.8 ... Konvertierungsoperatoren ... 348
13.9 ... Kontrollfragen und Aufgaben ... 352
14. Vererbung (Abgeleitete Klassen) ... 354
14.1 ... Die Vorbereitung ... 355
14.2 ... Das Ableiten einer Klasse ... 357
14.3 ... Kontrollfragen und Aufgaben ... 375
15. Templates ... 376
15.1 ... Funktions-Templates ... 376
15.2 ... Klassen-Templates ... 385
15.3 ... Templates der Standardbibliothek ... 390
15.4 ... Kontrollfragen und Aufgaben ... 397
16. Ausnahmebehandlung (Fehlerbehandlung) ... 399
16.1 ... Eine Ausnahme auslösen ... 401
16.2 ... Ausnahme auffangen und behandeln ... 402
16.3 ... Ausnahmeklassen (Fehlerklassen) ... 412
16.4 ... Standardausnahmen ... 415
16.5 ... Systemausnahmen ... 420
16.6 ... Kontrollfragen ... 421
17. Ein-/Ausgabestreams für Dateien ... 422
17.1 ... Der Umgang mit Dateien in C++ ... 422
17.2 ... Verschiedene Streams für Dateien ... 422
17.3 ... Datei öffnen und schließen ... 423
17.4 ... Kontrollfragen und Aufgaben ... 434
18. Weitere Sprachelemente und die Bibliotheken ... 435
18.1 ... Weitere Sprachelemente ... 435
18.2 ... Smart Pointer ... 442
18.3 ... Elemente der Standardbibliothek ... 452
18.4 ... Die Zeitbibliothek ... 458
18.5 ... Die »ratio«-Bibliothek ... 463
18.6 ... Multithreading ... 464
Lösungen der Übungsaufgaben ... 466
Index ... 489
1. Einstieg in die Welt von C++ ... 17
1.1 ... Der C++-Standard ... 17
1.2 ... Die nötigen Werkzeuge für C++ ... 18
1.3 ... Übersetzen mit g++ und clang++ ... 22
1.4 ... Übersetzen mit einer Entwicklungsumgebung ... 24
1.5 ... Listings zum Buch ... 28
1.6 ... Kontrollfragen und Aufgaben im Buch ... 28
1.7 ... Aufgabe ... 28
2. Erste Schritte in C++ ... 30
2.1 ... Das erste Programm in C++ ... 30
2.2 ... Anweisungen und Ausdrücke ... 32
2.3 ... Die Standard-Eingabe- und Ausgabestreams ... 33
2.4 ... Einige Begriffe zu C++ ... 38
2.5 ... Kontrollfragen und Aufgaben ... 40
3. Die eingebauten C++-Basisdatentypen ... 41
3.1 ... Variablen ... 41
3.2 ... Definition und Deklaration von Variablen ... 42
3.3 ... Initialisierung und Zuweisung von Werten ... 43
3.4 ... Ganzzahltypen ... 45
3.5 ... Ganzzahldatentyp für Zeichen ... 53
3.6 ... Fließkommazahlentypen ... 62
3.7 ... Der »auto«-Typ ... 64
3.8 ... Konstanten ... 66
3.9 ... Die Byte-Größe mit dem »sizeof«-Operator ... 67
3.10 ... Limits für die Basisdatentypen ... 68
3.11 ... Kontrollfragen und Aufgaben ... 71
4. Arbeiten mit den eingebauten Typen ... 72
4.1 ... Arithmetische Operatoren ... 72
4.2 ... Ungenaue Fließkommazahlen ... 79
4.3 ... Typumwandlung ... 81
4.4 ... Kontrollfragen und Aufgaben ... 87
5. Kontrollstrukturen ... 88
5.1 ... Der eingebaute Datentyp »bool« ... 88
5.2 ... Vergleichsoperatoren ... 89
5.3 ... Bedingte Anweisung mit »if« ... 91
5.4 ... Anweisungsblock für Kontrollstrukturen ... 93
5.5 ... Alternative »else«-Verzweigung ... 94
5.6 ... Bedingte Anweisung mit Initialisierung ... 95
5.7 ... Mehrfache Verzweigung ... 96
5.8 ... Der Bedingungsoperator »?:« ... 99
5.9 ... Logische Operatoren ... 100
5.10 ... Die Fallunterscheidung -- »switch« ... 102
5.11 ... Die kopfgesteuerte »while«-Schleife ... 105
5.12 ... Die fußgesteuerte »do while«-Schleife ... 107
5.13 ... Die Zählschleife »for« ... 108
5.14 ... Kontrollierte Sprunganweisungen ... 112
5.15 ... Kontrollfragen und Aufgaben ... 115
6. Arrays und Strings ... 116
6.1 ... Arrays ... 116
6.2 ... Strings in C++ ... 130
6.3 ... Kontrollfragen und Aufgaben ... 136
7. Referenzen und Zeiger ... 137
7.1 ... Referenzen ... 137
7.2 ... Zeiger ... 139
7.3 ... Kontrollfragen und Aufgaben ... 148
8. Funktionen ... 150
8.1 ... Grundlage zu den Funktionen ... 150
8.2 ... Referenzen als Parameter und Rückgabe ... 171
8.3 ... Zeiger als Parameter und Rückgabewert ... 178
8.4 ... Übergabe großer Elemente als Funktionsparameter ... 179
8.5 ... C-Arrays oder C-Strings als Funktionsparameter ... 181
8.6 ... Kontrollfragen und Aufgaben ... 182
9. Modularisierung und Präprozessor ... 184
9.1 ... Präprozessor-Direktiven ... 184
9.2 ... Modularisierung ... 189
9.3 ... Namensräume ... 195
9.4 ... Spezifizierer und Qualifikatoren ... 206
9.5 ... Kontrollfragen und Aufgaben ... 213
10. Strukturen, Aufzählungen und dynamische Speicherobjekte ... 215
10.1 ... Erste eigene Datentypen mit Strukturen ... 215
10.2 ... Aufzählungstyp »enum« ... 223
10.3 ... Eigene Namen mit »using« ... 225
10.4 ... Dynamische Speicherobjekte ... 226
10.5 ... Kontrollfragen und Aufgaben ... 236
11. Klassen ... 237
11.1 ... Klassen ... 237
11.2 ... Konstruktoren ... 251
11.3 ... Destruktoren ... 268
11.4 ... Weitere Formen von Methoden ... 273
11.5 ... Kontrollfragen und Aufgaben ... 281
12. Objekte und Klassenelemente ... 283
12.1 ... Objekt als Parameter ... 283
12.2 ... Freundfunktionen (»friend«) ... 288
12.3 ... Objekte einer Klasse als Rückgabewerte ... 290
12.4 ... Arrays von Objekten ... 296
12.5 ... Dynamische Objekte ... 297
12.6 ... Klassenobjekte als Klassenattribute ... 299
12.7 ... Containerklasse als Klassenattribut ... 304
12.8 ... Smart Pointer als Klassenattribut ... 307
12.9 ... Statische und konstante Klassenelemente ... 311
12.10 ... Die Nullregel (Rule of Zero) ... 318
12.11 ... Kontrollfragen und Aufgaben ... 322
13. Operatoren überladen ... 323
13.1 ... Das Schlüsselwort »operator« ... 325
13.2 ... Zweistellige (arithmetische) Operatoren überladen ... 326
13.3 ... Einstellige Operatoren überladen ... 333
13.4 ... Den Zuweisungsoperator überladen ... 337
13.5 ... Ausgabe- und Eingabeoperatoren überladen ... 342
13.6 ... Vergleichsoperatoren ... 345
13.7 ... Weitere Operatorüberladungen ... 348
13.8 ... Konvertierungsoperatoren ... 348
13.9 ... Kontrollfragen und Aufgaben ... 352
14. Vererbung (Abgeleitete Klassen) ... 354
14.1 ... Die Vorbereitung ... 355
14.2 ... Das Ableiten einer Klasse ... 357
14.3 ... Kontrollfragen und Aufgaben ... 375
15. Templates ... 376
15.1 ... Funktions-Templates ... 376
15.2 ... Klassen-Templates ... 385
15.3 ... Templates der Standardbibliothek ... 390
15.4 ... Kontrollfragen und Aufgaben ... 397
16. Ausnahmebehandlung (Fehlerbehandlung) ... 399
16.1 ... Eine Ausnahme auslösen ... 401
16.2 ... Ausnahme auffangen und behandeln ... 402
16.3 ... Ausnahmeklassen (Fehlerklassen) ... 412
16.4 ... Standardausnahmen ... 415
16.5 ... Systemausnahmen ... 420
16.6 ... Kontrollfragen ... 421
17. Ein-/Ausgabestreams für Dateien ... 422
17.1 ... Der Umgang mit Dateien in C++ ... 422
17.2 ... Verschiedene Streams für Dateien ... 422
17.3 ... Datei öffnen und schließen ... 423
17.4 ... Kontrollfragen und Aufgaben ... 434
18. Weitere Sprachelemente und die Bibliotheken ... 435
18.1 ... Weitere Sprachelemente ... 435
18.2 ... Smart Pointer ... 442
18.3 ... Elemente der Standardbibliothek ... 452
18.4 ... Die Zeitbibliothek ... 458
18.5 ... Die »ratio«-Bibliothek ... 463
18.6 ... Multithreading ... 464
Lösungen der Übungsaufgaben ... 466
Index ... 489
1.1 ... Der C++-Standard ... 17
1.2 ... Die nötigen Werkzeuge für C++ ... 18
1.3 ... Übersetzen mit g++ und clang++ ... 22
1.4 ... Übersetzen mit einer Entwicklungsumgebung ... 24
1.5 ... Listings zum Buch ... 28
1.6 ... Kontrollfragen und Aufgaben im Buch ... 28
1.7 ... Aufgabe ... 28
2. Erste Schritte in C++ ... 30
2.1 ... Das erste Programm in C++ ... 30
2.2 ... Anweisungen und Ausdrücke ... 32
2.3 ... Die Standard-Eingabe- und Ausgabestreams ... 33
2.4 ... Einige Begriffe zu C++ ... 38
2.5 ... Kontrollfragen und Aufgaben ... 40
3. Die eingebauten C++-Basisdatentypen ... 41
3.1 ... Variablen ... 41
3.2 ... Definition und Deklaration von Variablen ... 42
3.3 ... Initialisierung und Zuweisung von Werten ... 43
3.4 ... Ganzzahltypen ... 45
3.5 ... Ganzzahldatentyp für Zeichen ... 53
3.6 ... Fließkommazahlentypen ... 62
3.7 ... Der »auto«-Typ ... 64
3.8 ... Konstanten ... 66
3.9 ... Die Byte-Größe mit dem »sizeof«-Operator ... 67
3.10 ... Limits für die Basisdatentypen ... 68
3.11 ... Kontrollfragen und Aufgaben ... 71
4. Arbeiten mit den eingebauten Typen ... 72
4.1 ... Arithmetische Operatoren ... 72
4.2 ... Ungenaue Fließkommazahlen ... 79
4.3 ... Typumwandlung ... 81
4.4 ... Kontrollfragen und Aufgaben ... 87
5. Kontrollstrukturen ... 88
5.1 ... Der eingebaute Datentyp »bool« ... 88
5.2 ... Vergleichsoperatoren ... 89
5.3 ... Bedingte Anweisung mit »if« ... 91
5.4 ... Anweisungsblock für Kontrollstrukturen ... 93
5.5 ... Alternative »else«-Verzweigung ... 94
5.6 ... Bedingte Anweisung mit Initialisierung ... 95
5.7 ... Mehrfache Verzweigung ... 96
5.8 ... Der Bedingungsoperator »?:« ... 99
5.9 ... Logische Operatoren ... 100
5.10 ... Die Fallunterscheidung -- »switch« ... 102
5.11 ... Die kopfgesteuerte »while«-Schleife ... 105
5.12 ... Die fußgesteuerte »do while«-Schleife ... 107
5.13 ... Die Zählschleife »for« ... 108
5.14 ... Kontrollierte Sprunganweisungen ... 112
5.15 ... Kontrollfragen und Aufgaben ... 115
6. Arrays und Strings ... 116
6.1 ... Arrays ... 116
6.2 ... Strings in C++ ... 130
6.3 ... Kontrollfragen und Aufgaben ... 136
7. Referenzen und Zeiger ... 137
7.1 ... Referenzen ... 137
7.2 ... Zeiger ... 139
7.3 ... Kontrollfragen und Aufgaben ... 148
8. Funktionen ... 150
8.1 ... Grundlage zu den Funktionen ... 150
8.2 ... Referenzen als Parameter und Rückgabe ... 171
8.3 ... Zeiger als Parameter und Rückgabewert ... 178
8.4 ... Übergabe großer Elemente als Funktionsparameter ... 179
8.5 ... C-Arrays oder C-Strings als Funktionsparameter ... 181
8.6 ... Kontrollfragen und Aufgaben ... 182
9. Modularisierung und Präprozessor ... 184
9.1 ... Präprozessor-Direktiven ... 184
9.2 ... Modularisierung ... 189
9.3 ... Namensräume ... 195
9.4 ... Spezifizierer und Qualifikatoren ... 206
9.5 ... Kontrollfragen und Aufgaben ... 213
10. Strukturen, Aufzählungen und dynamische Speicherobjekte ... 215
10.1 ... Erste eigene Datentypen mit Strukturen ... 215
10.2 ... Aufzählungstyp »enum« ... 223
10.3 ... Eigene Namen mit »using« ... 225
10.4 ... Dynamische Speicherobjekte ... 226
10.5 ... Kontrollfragen und Aufgaben ... 236
11. Klassen ... 237
11.1 ... Klassen ... 237
11.2 ... Konstruktoren ... 251
11.3 ... Destruktoren ... 268
11.4 ... Weitere Formen von Methoden ... 273
11.5 ... Kontrollfragen und Aufgaben ... 281
12. Objekte und Klassenelemente ... 283
12.1 ... Objekt als Parameter ... 283
12.2 ... Freundfunktionen (»friend«) ... 288
12.3 ... Objekte einer Klasse als Rückgabewerte ... 290
12.4 ... Arrays von Objekten ... 296
12.5 ... Dynamische Objekte ... 297
12.6 ... Klassenobjekte als Klassenattribute ... 299
12.7 ... Containerklasse als Klassenattribut ... 304
12.8 ... Smart Pointer als Klassenattribut ... 307
12.9 ... Statische und konstante Klassenelemente ... 311
12.10 ... Die Nullregel (Rule of Zero) ... 318
12.11 ... Kontrollfragen und Aufgaben ... 322
13. Operatoren überladen ... 323
13.1 ... Das Schlüsselwort »operator« ... 325
13.2 ... Zweistellige (arithmetische) Operatoren überladen ... 326
13.3 ... Einstellige Operatoren überladen ... 333
13.4 ... Den Zuweisungsoperator überladen ... 337
13.5 ... Ausgabe- und Eingabeoperatoren überladen ... 342
13.6 ... Vergleichsoperatoren ... 345
13.7 ... Weitere Operatorüberladungen ... 348
13.8 ... Konvertierungsoperatoren ... 348
13.9 ... Kontrollfragen und Aufgaben ... 352
14. Vererbung (Abgeleitete Klassen) ... 354
14.1 ... Die Vorbereitung ... 355
14.2 ... Das Ableiten einer Klasse ... 357
14.3 ... Kontrollfragen und Aufgaben ... 375
15. Templates ... 376
15.1 ... Funktions-Templates ... 376
15.2 ... Klassen-Templates ... 385
15.3 ... Templates der Standardbibliothek ... 390
15.4 ... Kontrollfragen und Aufgaben ... 397
16. Ausnahmebehandlung (Fehlerbehandlung) ... 399
16.1 ... Eine Ausnahme auslösen ... 401
16.2 ... Ausnahme auffangen und behandeln ... 402
16.3 ... Ausnahmeklassen (Fehlerklassen) ... 412
16.4 ... Standardausnahmen ... 415
16.5 ... Systemausnahmen ... 420
16.6 ... Kontrollfragen ... 421
17. Ein-/Ausgabestreams für Dateien ... 422
17.1 ... Der Umgang mit Dateien in C++ ... 422
17.2 ... Verschiedene Streams für Dateien ... 422
17.3 ... Datei öffnen und schließen ... 423
17.4 ... Kontrollfragen und Aufgaben ... 434
18. Weitere Sprachelemente und die Bibliotheken ... 435
18.1 ... Weitere Sprachelemente ... 435
18.2 ... Smart Pointer ... 442
18.3 ... Elemente der Standardbibliothek ... 452
18.4 ... Die Zeitbibliothek ... 458
18.5 ... Die »ratio«-Bibliothek ... 463
18.6 ... Multithreading ... 464
Lösungen der Übungsaufgaben ... 466
Index ... 489