Eine Tour durch C++ -  Bjarne Stroustrup

Eine Tour durch C++ (eBook)

Der praktische Leitfaden für modernes C++.Übersetzung der 3. Auflage
eBook Download: PDF
2023 | 1. Auflage
408 Seiten
MITP Verlags GmbH & Co. KG
978-3-7475-0626-4 (ISBN)
Systemvoraussetzungen
34,99 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
  • 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«


Bjarne Stroustrup hat C++ entwickelt und die erste Implementierung geschrieben. Derzeit ist er Professor an der Columbia University und hat zuvor bei AT&T Bell Labs an der Texas A&M University sowie bei Morgan Stanley gearbeitet. Dr. Stroustrup erhielt zahlreiche Auszeichnungen, unter anderem den The National Academy of Engineering's Charles Stark Draper Prize for Engineering für die Konzeptionierung und Entwicklung der Programmiersprache C++. Er ist Mitglied der National Academy of Engineering und Fellow von IEEE, ACM, CHM und dem Churchill College Cambridge.

Cover 1
Titel 3
Impressum 4
Inhaltsverzeichnis 5
Einleitung 11
Danksagungen 13
Über die Fachkorrektoren der deutschen Ausgabe 13
Kapitel 1: Die Grundlagen 15
1.1 Einführung 15
1.2 Programme 15
1.2.1 Hello, World! 16
1.3 Funktionen 18
1.4 Typen, Variablen und Arithmetik 21
1.4.1 Rechenoperatoren 22
1.4.2 Initialisierung 24
1.5 Gültigkeitsbereich und Lebensdauer 25
1.6 Konstanten 27
1.7 Zeiger, Arrays und Referenzen 29
1.7.1 Der Null-Pointer 31
1.8 Bedingungen prüfen 33
1.9 Auf Hardware abbilden 36
1.9.1 Zuweisung 36
1.9.2 Initialisierung 38
1.10 Ratschläge 39
Kapitel 2: Benutzerdefinierte Typen 41
2.1 Einführung 41
2.2 Strukturen 42
2.3 Klassen 44
2.4 Aufzählungen 46
2.5 Unions 48
2.6 Ratschläge 51
Kapitel 3: Modularität 53
3.1 Einführung 53
3.2 Separates Kompilieren 54
3.2.1 Header-Dateien 55
3.2.2 Module 58
3.3 Namensräume 62
3.4 Funktionsargumente und Rückgabewerte 64
3.4.1 Argumentübergabe 65
3.4.2 Werterückgabe 66
3.4.3 Rückgabetyp ableiten 68
3.4.4 Suffix-Rückgabetyp 69
3.4.5 Strukturierte Bindung 69
3.5 Ratschläge 71
Kapitel 4: Fehlerbehandlung 73
4.1 Einführung 73
4.2 Exceptions 73
4.3 Invarianten 75
4.4 Alternativen für die Fehlerbehandlung 78
4.5 Assertions 81
4.5.1 assert() 82
4.5.2 Statische Assertionen 83
4.5.3 noexcept 84
4.6 Ratschläge 84
Kapitel 5: Klassen 87
5.1 Einführung 87
5.1.1 Klassen 88
5.2 Konkrete Typen 88
5.2.1 Ein arithmetischer Typ 89
5.2.2 Ein Container 92
5.2.3 Container initialisieren 94
5.3 Abstrakte Typen 96
5.4 Virtuelle Funktionen 100
5.5 Klassenhierarchien 101
5.5.1 Vorteile von Hierarchien 105
5.5.2 Die Navigation in einer Hierarchie 106
5.5.3 Ressourcenlecks vermeiden 108
5.6 Ratschläge 110
Kapitel 6: Notwendige Operationen 113
6.1 Einführung 113
6.1.1 Notwendige Operationen 113
6.1.2 Konvertierungen 116
6.1.3 Member-Initialisierer 116
6.2 Kopieren und Verschieben 117
6.2.1 Container kopieren 118
6.2.2 Container verschieben 120
6.3 Ressourcenverwaltung 123
6.4 Operatoren überladen 125
6.5 Konventionelle Operationen 126
6.5.1 Vergleiche (Relationale Operatoren) 127
6.5.2 Container-Operationen 129
6.5.3 Iteratoren und »smarte Zeiger« 130
6.5.4 Eingabe- und Ausgabeoperationen 130
6.5.5 swap() 131
6.5.6 hash< >
6.6 Benutzerdefinierte Literale 131
6.7 Ratschläge 132
Kapitel 7: Templates 135
7.1 Einführung 135
7.2 Parametrisierte Typen 135
7.2.1 Beschränkte Template-Argumente 138
7.2.2 Wert-Template-Argumente 139
7.2.3 Deduktion von Template-Argumenten 140
7.3 Parametrisierte Operationen 142
7.3.1 Funktions-Templates 143
7.3.2 Funktionsobjekte 144
7.3.3 Lambda-Ausdrücke 146
7.4 Template-Mechanismen 151
7.4.1 Variablen-Templates 152
7.4.2 Aliasse 153
7.4.3 Compile-Zeit-if 154
7.5 Ratschläge 156
Kapitel 8: Konzepte und generische Programmierung 157
8.1 Einführung 157
8.2 Konzepte 158
8.2.1 Verwendung von Konzepten 158
8.2.2 Konzeptbasiertes Überladen 160
8.2.3 Gültiger Code 161
8.2.4 Definition von Konzepten 163
8.2.5 Konzepte und auto 167
8.2.6 Konzepte und Typen 169
8.3 Generische Programmierung 169
8.3.1 Verwendung von Konzepten 170
8.3.2 Abstraktion mittels Templates 170
8.4 Variadische Templates 173
8.4.1 Fold-Ausdrücke 174
8.4.2 Argumente weitergeben 176
8.5 Modell der Template-Kompilierung 176
8.6 Ratschläge 177
Kapitel 9: Überblick über die Bibliothek 179
9.1 Einführung 179
9.2 Komponenten der Standardbibliothek 180
9.3 Organisation der Standardbibliothek 181
9.3.1 Namensräume 182
9.3.2 Der Namensraum ranges 183
9.3.3 Module 184
9.3.4 Header 184
9.4 Ratschläge 186
Kapitel 10: Strings und reguläre Ausdrücke 187
10.1 Einführung 187
10.2 Strings 187
10.2.1 Die Implementierung von string 189
10.3 String-Views 191
10.4 Reguläre Ausdrücke 193
10.4.1 Suche 194
10.4.2 Notation regulärer Ausdrücke 195
10.4.3 Iteratoren 200
10.5 Ratschläge 201
Kapitel 11: Eingabe und Ausgabe 203
11.1 Einführung 203
11.2 Ausgabe 204
11.3 Eingabe 205
11.4 I/O-Status 207
11.5 Ein-/Ausgabe benutzerdefinierter Typen 208
11.6 Ausgabeformatierung 210
11.6.1 Stream-Formatierung 210
11.6.2 Formatierung im printf()-Stil 212
11.7 Streams 216
11.7.1 Standard-Streams 216
11.7.2 Datei-Streams 217
11.7.3 String-Streams 217
11.7.4 Speicher-Streams 219
11.7.5 Synchronisierte Streams 219
11.8 Ein-/Ausgaben im C-Stil 220
11.9 Dateisystem 221
11.9.1 Pfade 221
11.9.2 Dateien und Verzeichnisse 225
11.10 Ratschläge 226
Kapitel 12: Container 229
12.1 Einführung 229
12.2 vector 229
12.2.1 Elemente 233
12.2.2 Bereichsüberprüfung 234
12.3 list 236
12.4 forward_list 238
12.5 map 238
12.6 unordered_map 240
12.7 Allokatoren 242
12.8 Ein Überblick über Container 244
12.9 Ratschläge 246
Kapitel 13: Algorithmen 249
13.1 Einführung 249
13.2 Verwendung von Iteratoren 252
13.3 Iterator-Typen 255
13.3.1 Stream-Iteratoren 257
13.4 Verwendung von Prädikaten 260
13.5 Überblick über Algorithmen 260
13.6 Parallele Algorithmen 262
13.7 Ratschläge 264
Kapitel 14: Bereiche (Ranges) 265
14.1 Einführung 265
14.2 Views 266
14.3 Generatoren 269
14.4 Pipelines 270
14.5 Überblick über Konzepte 271
14.5.1 Typkonzepte 271
14.5.2 Iterator-Konzepte 275
14.5.3 Bereichskonzepte 277
14.6 Ratschläge 278
Kapitel 15: Zeiger und Container 279
15.1 Einführung 279
15.2 Zeiger 280
15.2.1 unique_ptr und shared_ptr 281
15.2.2 span 285
15.3 Container 287
15.3.1 array 289
15.3.2 bitset 291
15.3.3 pair 292
15.3.4 tuple 295
15.4 Alternativen 297
15.4.1 variant 297
15.4.2 optional 300
15.4.3 any 301
15.5 Ratschläge 302
Kapitel 16: Utilities 305
16.1 Einführung 305
16.2 Zeit 305
16.2.1 Uhren 305
16.2.2 Kalender 306
16.2.3 Zeitzonen 308
16.3 Funktionsanpassung 309
16.3.1 Lambdas als Adapter 309
16.3.2 mem_fn() 309
16.3.3 function 310
16.4 Typfunktionen 310
16.4.1 Typprädikate 312
16.4.2 Bedingte Eigenschaften 314
16.4.3 Typgeneratoren 316
16.4.4 Assoziierte Typen 317
16.5 source_location 317
16.6 move() und forward() 318
16.7 Bitmanipulation 320
16.8 Ein Programm beenden 321
16.9 Ratschläge 322
Kapitel 17: Numerik 325
17.1 Einführung 325
17.2 Mathematische Funktionen 325
17.3 Numerische Algorithmen 327
17.3.1 Parallele numerische Algorithmen 328
17.4 Komplexe Zahlen 329
17.5 Zufallszahlen 330
17.6 Vektorarithmetik 333
17.7 Numerische Grenzen 333
17.8 Typ-Aliasse 334
17.9 Mathematische Konstanten 334
17.10 Ratschläge 335
Kapitel 18: Nebenläufigkeit 337
18.1 Einführung 337
18.2 Tasks und thread 338
18.2.1 Argumente übergeben 340
18.2.2 Ergebnisse zurückgeben 341
18.3 Daten gemeinsam nutzen 342
18.3.1 mutexe und Locks 342
18.3.2 atomic 344
18.4 Warten auf Ereignisse 345
18.5 Kommunizierende Tasks 347
18.5.1 future und promise 348
18.5.2 packaged_task 350
18.5.3 async() 351
18.5.4 Einen Thread stoppen 352
18.6 Koroutinen 354
18.6.1 Kooperatives Multitasking 355
18.7 Ratschläge 359
Kapitel 19: Geschichte und Kompatibilität 363
19.1 Geschichte 363
19.1.1 Chronik 364
19.1.2 Die frühen Jahre 366
19.1.3 Die ISO-C++-Standards 370
19.1.4 Standards und Stil 372
19.1.5 Verwendung von C++ 373
19.1.6 Das C++-Modell 374
19.2 Die Entwicklung der Merkmale von C++ 375
19.2.1 Sprachmerkmale von C++11 375
19.2.2 Sprachmerkmale von C++14 376
19.2.3 Sprachmerkmale von C++17 377
19.2.4 Sprachmerkmale von C++20 377
19.2.5 Komponenten der C++11-Standardbibliothek 378
19.2.6 Komponenten der C++14-Standardbibliothek 379
19.2.7 Komponenten der C++17-Standardbibliothek 379
19.2.8 Komponenten der C++20-Standardbibliothek 379
19.2.9 Entfernte und veraltete Funktionsmerkmale 380
19.3 C/C++-Kompatibilität 381
19.3.1 C und C++ sind Geschwister 381
19.3.2 Kompatibilitätsprobleme 383
19.4 Ratschläge 386
Anhang A: module std 389
A.1 Einführung 389
A.2 Benutzen Sie, was Ihre Implementierung zu bieten hat 390
A.3 Benutzen Sie Header 390
A.4 Machen Sie sich Ihr eigenes module std 391
A.5 Ratschläge 392
Anhang B: Literaturverzeichnis 393
B.1 Literaturhinweise 393
Stichwortverzeichnis 399

Erscheint lt. Verlag 27.6.2023
Sprache deutsch
Themenwelt Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
ISBN-10 3-7475-0626-7 / 3747506267
ISBN-13 978-3-7475-0626-4 / 9783747506264
Haben Sie eine Frage zum Produkt?
PDFPDF (Wasserzeichen)
Größe: 6,6 MB

DRM: Digitales Wasserzeichen
Dieses eBook enthält ein digitales Wasser­zeichen und ist damit für Sie persona­lisiert. Bei einer missbräuch­lichen Weiter­gabe des eBooks an Dritte ist eine Rück­ver­folgung an die Quelle möglich.

Dateiformat: PDF (Portable Document Format)
Mit einem festen Seiten­layout eignet sich die PDF besonders für Fach­bücher mit Spalten, Tabellen und Abbild­ungen. Eine PDF kann auf fast allen Geräten ange­zeigt werden, ist aber für kleine Displays (Smart­phone, eReader) nur einge­schränkt geeignet.

Systemvoraussetzungen:
PC/Mac: Mit einem PC oder Mac können Sie dieses eBook lesen. Sie benötigen dafür einen PDF-Viewer - z.B. den Adobe Reader oder Adobe Digital Editions.
eReader: Dieses eBook kann mit (fast) allen eBook-Readern gelesen werden. Mit dem amazon-Kindle ist es aber nicht kompatibel.
Smartphone/Tablet: Egal ob Apple oder Android, dieses eBook können Sie lesen. Sie benötigen dafür einen PDF-Viewer - z.B. die kostenlose Adobe Digital Editions-App.

Zusätzliches Feature: Online Lesen
Dieses eBook können Sie zusätzlich zum Download auch online im Webbrowser lesen.

Buying eBooks from abroad
For tax law reasons we can sell eBooks just within Germany and Switzerland. Regrettably we cannot fulfill eBook-orders from other countries.

Mehr entdecken
aus dem Bereich
Das Handbuch für Webentwickler

von Philip Ackermann

eBook Download (2023)
Rheinwerk Computing (Verlag)
37,43
Das umfassende Handbuch

von Johannes Ernesti; Peter Kaiser

eBook Download (2023)
Rheinwerk Computing (Verlag)
33,68