E-Book, Deutsch, 408 Seiten
Reihe: mitp Professional
Stroustrup Eine Tour durch C++
1., 2023
ISBN: 978-3-7475-0626-4
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark
Der praktische Leitfaden für modernes C++.Übersetzung der 3. Auflage
E-Book, Deutsch, 408 Seiten
Reihe: mitp Professional
ISBN: 978-3-7475-0626-4
Verlag: mitp Verlags GmbH & Co.KG
Format: PDF
Kopierschutz: 1 - PDF Watermark
- Die neuesten Sprachfeatures im Überblick
- Verfasst vom Entwickler von C++
- Übersetzung der 3. Auflage
Dieses Buch bietet erfahrenen Programmierern einen praktischen Überblick über C++20 nach ISO-Standard und damit ein klares Verständnis für den Einsatz von modernem C++. Anhand vieler Codebeispiele und hilfreicher Praxistipps wird ein Großteil der Hauptfeatures der Sprache sowie der Standardbibliothek behandelt, die für den effektiven Einsatz unverzichtbar sind.
Stroustrup stellt die einzelnen Sprachfeatures von C++ vor und zeigt, wie sie im Kontext der unterstützten Programmierstile eingesetzt werden, beispielsweise der objektorientierten oder generischen Programmierung. Seine Tour beginnt mit den Grundlagen und setzt den Fokus anschließend auf fortgeschrittene Techniken, wobei er insbesondere auf die neueren Sprach-features eingeht.
Dieses Buch deckt zahlreiche Features ab, die mit C++20 neu eingeführt wurden, darunter Module, Konzepte, Koroutinen und Bereiche. Selbst einige schon jetzt verfügbare Komponenten, die nicht vor C++23 in den Standard integriert werden sollen, werden vorgestellt.
Wenn Sie bereits Programmierkenntnisse in C++ oder einer anderen Sprache haben, ist dies die kompakteste und verständlichste Einführung, um die Besonderheiten und Vorteile von modernem C++ kennenzulernen.
Aus dem Inhalt- Die Grundlagen: Funktionen, Referenzen, Zeiger und mehr
- Benutzerdefinierte Typen
- Modularität
- Fehlerbehandlung
- Klassen
- Operationen
- Templates
- Konzepte und generische Programmierung
- Die Standardbibliothek
- Strings und reguläre Ausdrücke
- Streams
- Algorithmen
- Bereiche (Ranges)
- Zeiger und Container
- Utilities
- Numerik
- Nebenläufigkeit
- Zahlreiche Ratschläge für die effektive Programmierung aus den »C++ Core Guidelines«
Zielgruppe
Fortgeschrittene Programmierer
Autoren/Hrsg.
Weitere Infos & Material
1;Cover;1
2;Titel;3
3;Impressum;4
4;Inhaltsverzeichnis;5
5;Einleitung;11
5.1;Danksagungen;13
5.2;Über die Fachkorrektoren der deutschen Ausgabe;13
6;Kapitel 1: Die Grundlagen;15
6.1;1.1 Einführung;15
6.2;1.2 Programme;15
6.2.1;1.2.1 Hello, World!;16
6.3;1.3 Funktionen;18
6.4;1.4 Typen, Variablen und Arithmetik;21
6.4.1;1.4.1 Rechenoperatoren;22
6.4.2;1.4.2 Initialisierung;24
6.5;1.5 Gültigkeitsbereich und Lebensdauer;25
6.6;1.6 Konstanten;27
6.7;1.7 Zeiger, Arrays und Referenzen;29
6.7.1;1.7.1 Der Null-Pointer;31
6.8;1.8 Bedingungen prüfen;33
6.9;1.9 Auf Hardware abbilden;36
6.9.1;1.9.1 Zuweisung;36
6.9.2;1.9.2 Initialisierung;38
6.10;1.10 Ratschläge;39
7;Kapitel 2: Benutzerdefinierte Typen;41
7.1;2.1 Einführung;41
7.2;2.2 Strukturen;42
7.3;2.3 Klassen;44
7.4;2.4 Aufzählungen;46
7.5;2.5 Unions;48
7.6;2.6 Ratschläge;51
8;Kapitel 3: Modularität;53
8.1;3.1 Einführung;53
8.2;3.2 Separates Kompilieren;54
8.2.1;3.2.1 Header-Dateien;55
8.2.2;3.2.2 Module;58
8.3;3.3 Namensräume;62
8.4;3.4 Funktionsargumente und Rückgabewerte;64
8.4.1;3.4.1 Argumentübergabe;65
8.4.2;3.4.2 Werterückgabe;66
8.4.3;3.4.3 Rückgabetyp ableiten;68
8.4.4;3.4.4 Suffix-Rückgabetyp;69
8.4.5;3.4.5 Strukturierte Bindung;69
8.5;3.5 Ratschläge;71
9;Kapitel 4: Fehlerbehandlung;73
9.1;4.1 Einführung;73
9.2;4.2 Exceptions;73
9.3;4.3 Invarianten;75
9.4;4.4 Alternativen für die Fehlerbehandlung;78
9.5;4.5 Assertions;81
9.5.1;4.5.1 assert();82
9.5.2;4.5.2 Statische Assertionen;83
9.5.3;4.5.3 noexcept;84
9.6;4.6 Ratschläge;84
10;Kapitel 5: Klassen;87
10.1;5.1 Einführung;87
10.1.1;5.1.1 Klassen;88
10.2;5.2 Konkrete Typen;88
10.2.1;5.2.1 Ein arithmetischer Typ;89
10.2.2;5.2.2 Ein Container;92
10.2.3;5.2.3 Container initialisieren;94
10.3;5.3 Abstrakte Typen;96
10.4;5.4 Virtuelle Funktionen;100
10.5;5.5 Klassenhierarchien;101
10.5.1;5.5.1 Vorteile von Hierarchien;105
10.5.2;5.5.2 Die Navigation in einer Hierarchie;106
10.5.3;5.5.3 Ressourcenlecks vermeiden;108
10.6;5.6 Ratschläge;110
11;Kapitel 6: Notwendige Operationen;113
11.1;6.1 Einführung;113
11.1.1;6.1.1 Notwendige Operationen;113
11.1.2;6.1.2 Konvertierungen;116
11.1.3;6.1.3 Member-Initialisierer;116
11.2;6.2 Kopieren und Verschieben;117
11.2.1;6.2.1 Container kopieren;118
11.2.2;6.2.2 Container verschieben;120
11.3;6.3 Ressourcenverwaltung;123
11.4;6.4 Operatoren überladen;125
11.5;6.5 Konventionelle Operationen;126
11.5.1;6.5.1 Vergleiche (Relationale Operatoren);127
11.5.2;6.5.2 Container-Operationen;129
11.5.3;6.5.3 Iteratoren und »smarte Zeiger«;130
11.5.4;6.5.4 Eingabe- und Ausgabeoperationen;130
11.5.5;6.5.5 swap();131
11.5.6;6.5.6 hash<>;131
11.6;6.6 Benutzerdefinierte Literale;131
11.7;6.7 Ratschläge;132
12;Kapitel 7: Templates;135
12.1;7.1 Einführung;135
12.2;7.2 Parametrisierte Typen;135
12.2.1;7.2.1 Beschränkte Template-Argumente;138
12.2.2;7.2.2 Wert-Template-Argumente;139
12.2.3;7.2.3 Deduktion von Template-Argumenten;140
12.3;7.3 Parametrisierte Operationen;142
12.3.1;7.3.1 Funktions-Templates;143
12.3.2;7.3.2 Funktionsobjekte;144
12.3.3;7.3.3 Lambda-Ausdrücke;146
12.4;7.4 Template-Mechanismen;151
12.4.1;7.4.1 Variablen-Templates;152
12.4.2;7.4.2 Aliasse;153
12.4.3;7.4.3 Compile-Zeit-if;154
12.5;7.5 Ratschläge;156
13;Kapitel 8: Konzepte und generische Programmierung;157
13.1;8.1 Einführung;157
13.2;8.2 Konzepte;158
13.2.1;8.2.1 Verwendung von Konzepten;158
13.2.2;8.2.2 Konzeptbasiertes Überladen;160
13.2.3;8.2.3 Gültiger Code;161
13.2.4;8.2.4 Definition von Konzepten;163
13.2.5;8.2.5 Konzepte und auto;167
13.2.6;8.2.6 Konzepte und Typen;169
13.3;8.3 Generische Programmierung;169
13.3.1;8.3.1 Verwendung von Konzepten;170
13.3.2;8.3.2 Abstraktion mittels Templates;170
13.4;8.4 Variadische Templates;173
13.4.1;8.4.1 Fold-Ausdrücke;174
13.4.2;8.4.2 Argumente weitergeben;176
13.5;8.5 Modell der Template-Kompilierung;176
13.6;8.6 Ratschläge;177
14;Kapitel 9: Überblick über die Bibliothek;179
14.1;9.1 Einführung;179
14.2;9.2 Komponenten der Standardbibliothek;180
14.3;9.3 Organisation der Standardbibliothek;181
14.3.1;9.3.1 Namensräume;182
14.3.2;9.3.2 Der Namensraum ranges;183
14.3.3;9.3.3 Module;184
14.3.4;9.3.4 Header;184
14.4;9.4 Ratschläge;186
15;Kapitel 10: Strings und reguläre Ausdrücke;187
15.1;10.1 Einführung;187
15.2;10.2 Strings;187
15.2.1;10.2.1 Die Implementierung von string;189
15.3;10.3 String-Views;191
15.4;10.4 Reguläre Ausdrücke;193
15.4.1;10.4.1 Suche;194
15.4.2;10.4.2 Notation regulärer Ausdrücke;195
15.4.3;10.4.3 Iteratoren;200
15.5;10.5 Ratschläge;201
16;Kapitel 11: Eingabe und Ausgabe;203
16.1;11.1 Einführung;203
16.2;11.2 Ausgabe;204
16.3;11.3 Eingabe;205
16.4;11.4 I/O-Status;207
16.5;11.5 Ein-/Ausgabe benutzerdefinierter Typen;208
16.6;11.6 Ausgabeformatierung;210
16.6.1;11.6.1 Stream-Formatierung;210
16.6.2;11.6.2 Formatierung im printf()-Stil;212
16.7;11.7 Streams;216
16.7.1;11.7.1 Standard-Streams;216
16.7.2;11.7.2 Datei-Streams;217
16.7.3;11.7.3 String-Streams;217
16.7.4;11.7.4 Speicher-Streams;219
16.7.5;11.7.5 Synchronisierte Streams;219
16.8;11.8 Ein-/Ausgaben im C-Stil;220
16.9;11.9 Dateisystem;221
16.9.1;11.9.1 Pfade;221
16.9.2;11.9.2 Dateien und Verzeichnisse;225
16.10;11.10 Ratschläge;226
17;Kapitel 12: Container;229
17.1;12.1 Einführung;229
17.2;12.2 vector;229
17.2.1;12.2.1 Elemente;233
17.2.2;12.2.2 Bereichsüberprüfung;234
17.3;12.3 list;236
17.4;12.4 forward_list;238
17.5;12.5 map;238
17.6;12.6 unordered_map;240
17.7;12.7 Allokatoren;242
17.8;12.8 Ein Überblick über Container;244
17.9;12.9 Ratschläge;246
18;Kapitel 13: Algorithmen;249
18.1;13.1 Einführung;249
18.2;13.2 Verwendung von Iteratoren;252
18.3;13.3 Iterator-Typen;255
18.3.1;13.3.1 Stream-Iteratoren;257
18.4;13.4 Verwendung von Prädikaten;260
18.5;13.5 Überblick über Algorithmen;260
18.6;13.6 Parallele Algorithmen;262
18.7;13.7 Ratschläge;264
19;Kapitel 14: Bereiche (Ranges);265
19.1;14.1 Einführung;265
19.2;14.2 Views;266
19.3;14.3 Generatoren;269
19.4;14.4 Pipelines;270
19.5;14.5 Überblick über Konzepte;271
19.5.1;14.5.1 Typkonzepte;271
19.5.2;14.5.2 Iterator-Konzepte;275
19.5.3;14.5.3 Bereichskonzepte;277
19.6;14.6 Ratschläge;278
20;Kapitel 15: Zeiger und Container;279
20.1;15.1 Einführung;279
20.2;15.2 Zeiger;280
20.2.1;15.2.1 unique_ptr und shared_ptr;281
20.2.2;15.2.2 span;285
20.3;15.3 Container;287
20.3.1;15.3.1 array;289
20.3.2;15.3.2 bitset;291
20.3.3;15.3.3 pair;292
20.3.4;15.3.4 tuple;295
20.4;15.4 Alternativen;297
20.4.1;15.4.1 variant;297
20.4.2;15.4.2 optional;300
20.4.3;15.4.3 any;301
20.5;15.5 Ratschläge;302
21;Kapitel 16: Utilities;305
21.1;16.1 Einführung;305
21.2;16.2 Zeit;305
21.2.1;16.2.1 Uhren;305
21.2.2;16.2.2 Kalender;306
21.2.3;16.2.3 Zeitzonen;308
21.3;16.3 Funktionsanpassung;309
21.3.1;16.3.1 Lambdas als Adapter;309
21.3.2;16.3.2 mem_fn();309
21.3.3;16.3.3 function;310
21.4;16.4 Typfunktionen;310
21.4.1;16.4.1 Typprädikate;312
21.4.2;16.4.2 Bedingte Eigenschaften;314
21.4.3;16.4.3 Typgeneratoren;316
21.4.4;16.4.4 Assoziierte Typen;317
21.5;16.5 source_location;317
21.6;16.6 move() und forward();318
21.7;16.7 Bitmanipulation;320
21.8;16.8 Ein Programm beenden;321
21.9;16.9 Ratschläge;322
22;Kapitel 17: Numerik;325
22.1;17.1 Einführung;325
22.2;17.2 Mathematische Funktionen;325
22.3;17.3 Numerische Algorithmen;327
22.3.1;17.3.1 Parallele numerische Algorithmen;328
22.4;17.4 Komplexe Zahlen;329
22.5;17.5 Zufallszahlen;330
22.6;17.6 Vektorarithmetik;333
22.7;17.7 Numerische Grenzen;333
22.8;17.8 Typ-Aliasse;334
22.9;17.9 Mathematische Konstanten;334
22.10;17.10 Ratschläge;335
23;Kapitel 18: Nebenläufigkeit;337
23.1;18.1 Einführung;337
23.2;18.2 Tasks und thread;338
23.2.1;18.2.1 Argumente übergeben;340
23.2.2;18.2.2 Ergebnisse zurückgeben;341
23.3;18.3 Daten gemeinsam nutzen;342
23.3.1;18.3.1 mutexe und Locks;342
23.3.2;18.3.2 atomic;344
23.4;18.4 Warten auf Ereignisse;345
23.5;18.5 Kommunizierende Tasks;347
23.5.1;18.5.1 future und promise;348
23.5.2;18.5.2 packaged_task;350
23.5.3;18.5.3 async();351
23.5.4;18.5.4 Einen Thread stoppen;352
23.6;18.6 Koroutinen;354
23.6.1;18.6.1 Kooperatives Multitasking;355
23.7;18.7 Ratschläge;359
24;Kapitel 19: Geschichte und Kompatibilität;363
24.1;19.1 Geschichte;363
24.1.1;19.1.1 Chronik;364
24.1.2;19.1.2 Die frühen Jahre;366
24.1.3;19.1.3 Die ISO-C++-Standards;370
24.1.4;19.1.4 Standards und Stil;372
24.1.5;19.1.5 Verwendung von C++;373
24.1.6;19.1.6 Das C++-Modell;374
24.2;19.2 Die Entwicklung der Merkmale von C++;375
24.2.1;19.2.1 Sprachmerkmale von C++11;375
24.2.2;19.2.2 Sprachmerkmale von C++14;376
24.2.3;19.2.3 Sprachmerkmale von C++17;377
24.2.4;19.2.4 Sprachmerkmale von C++20;377
24.2.5;19.2.5 Komponenten der C++11-Standardbibliothek;378
24.2.6;19.2.6 Komponenten der C++14-Standardbibliothek;379
24.2.7;19.2.7 Komponenten der C++17-Standardbibliothek;379
24.2.8;19.2.8 Komponenten der C++20-Standardbibliothek;379
24.2.9;19.2.9 Entfernte und veraltete Funktionsmerkmale;380
24.3;19.3 C/C++-Kompatibilität;381
24.3.1;19.3.1 C und C++ sind Geschwister;381
24.3.2;19.3.2 Kompatibilitätsprobleme;383
24.4;19.4 Ratschläge;386
25;Anhang A: module std;389
25.1;A.1 Einführung;389
25.2;A.2 Benutzen Sie, was Ihre Implementierung zu bieten hat;390
25.3;A.3 Benutzen Sie Header;390
25.4;A.4 Machen Sie sich Ihr eigenes module std;391
25.5;A.5 Ratschläge;392
26;Anhang B: Literaturverzeichnis;393
26.1;B.1 Literaturhinweise;393
27;Stichwortverzeichnis;399




