Die C++-Programmiersprache (eBook)

aktuell zum C++11-Standard
eBook Download: PDF
2015
1467 Seiten
Hanser, Carl (Verlag)
978-3-446-43981-8 (ISBN)

Lese- und Medienproben

Die C++-Programmiersprache - Bjarne Stroustrup
Systemvoraussetzungen
49,99 inkl. MwSt
  • Download sofort lieferbar
  • Zahlungsarten anzeigen
DIE C++-PROGRAMMIERSPRACHE//
- C++11 - zugänglich für Programmierer, die von C++98 oder anderen Sprachen kommen, wobei die vorgestellten Einblicke und Techniken selbst C++11-Spitzenprogrammierer unverzichtbar finden werden.
- Referenz und Tutorial für Programmierer, die C++ möglichst effektiv einsetzen möchten.
- Der neue C++11-Standard ermöglicht es Programmierern, Ideen klarer, einfacher und direkter auszudrücken sowie schnelleren und effizienteren Code zu schreiben.
Die C++-Programmiersprache ist eine akkurate, ausführlich erläuterte und ganzheitliche Darstellung der vollständigen Sprache - mit all ihren Instrumenten, Abstraktionsmechanismen, Standardbibliotheken und wichtigsten Entwurfstechniken. Stroustrup präsentiert das ganze Buch hindurch knappe, 'reine C++11-Beispiele', die sowohl den Einsatz der Sprachmittel als auch den Programmentwurf anschaulich darstellen. Zum umfassenden Verständnis gibt der Autor zahlreiche Querverweise auf andere Stellen im Buch sowie auf den ISO-Standard an.
Neuigkeiten im Rahmen von C++11 sind
- Unterstützung für Nebenläufigkeit,
- reguläre Ausdrücke, Ressourcenverwaltungszeiger, Zufallszahlen und verbesserte Container,
- Allgemeine und einheitliche Initialisierung, vereinfachte for-Anweisungen, Verschiebesemantik und Unicode-Unterstützung,
- Lambda-Ausdrücke, allgemeine konstante Ausdrücke, Kontrolle über Standardwerte von Klassen, variadische Templates, Template-Alias und benutzerdefinierte Literale,
- Kompatibilitätsfragen.
AUS DEM INHALT //
Elementare Sprachmittel: Typ, Objekt, Gültigkeitsbereich, Speicherung, arithmetische Grundlagen und weitere // Modularität, die durch Namespaces, Quelldateien und Ausnahmenbehandlung unterstützt wird // C++-Abstraktion einschließlich Klassen, Klassenhierarchien und Templates für eine Synthese von herkömmlicher, objektorientierter und generischer Programmierung // Standardbibliothek: Container, Algorithmen, Iteratoren, Utilities, Strings, Stream-E/A, Locales, Numerik und weitere // Das grundlegende C++-Speichermodell im Detail

Dr. Bjarne Stroustrup hat C++ entwickelt und als Erster implementiert. Er ist Professor an der Texas A&M University und Mitglied der US National Academy of Engineering, IEEE-Fellow und ACM-Fellow. Seine Forschungen befassen sich mit verteilten Systemen, Entwurf, Programmiertechniken, Softwareentwicklungs-Tools und Programmiersprachen. Er ist aktiv an der ISO-Standardisierung von C++ beteiligt.

Inhalt 6
Vorwort 32
Teil I Einführung 36
1 Vorbemerkungen 38
1.1?Zum Aufbau dieses Buchs 38
1.1.1?Einführung 39
1.1.2?Grundlegende Sprachmittel 39
1.1.3?Abstraktionsmechanismen 40
1.1.4?Die Standardbibliothek 42
1.1.5?Beispiele und Referenzen 43
1.2?Der Entwurf von C++ 45
1.2.1?Programmierstile 47
1.2.2?Typprüfung 50
1.2.3?C-Kompatibilität 51
1.2.4?Sprache, Bibliotheken und Systeme 52
1.3?C++ lernen 54
1.3.1?In C++ programmieren 56
1.3.2?Ratschläge für C++-Programmierer 57
1.3.3?Ratschläge für C-Programmierer 58
1.3.4?Ratschläge für Java-Programmierer 59
1.4?Historische Anmerkungen 60
1.4.1?Chronik 61
1.4.2?Die frühen Jahre 62
1.4.2.1?Sprachfeatures und Bibliotheksinstrumente 63
1.4.3?Der 1998-Standard 65
1.4.3.1?Sprachfeatures 65
1.4.3.2?Die Standardbibliothek 66
1.4.4?Der 2011-Standard 67
1.4.4.1?Sprachfeatures 68
1.4.4.2?Standardbibliothek 69
1.4.5?Wofür wird C++ verwendet? 70
1.5?Ratschläge 72
1.6?Literaturhinweise 73
2 Ein Rundreise durch C++: Die Grundlagen 78
2.1?Einführung 78
2.2?Die Grundlagen 79
2.2.1?Hello, World! 79
2.2.2?Typen, Variablen und Arithmetik 81
2.2.3?Konstanten 83
2.2.4?Tests und Schleifen 84
2.2.5?Zeiger, Arrays und Schleifen 86
2.3?Benutzerdefinierte Typen 88
2.3.1?Strukturen 88
2.3.2?Klassen 90
2.3.3?Aufzählungen 92
2.4?Modularität 93
2.4.1?Separate Kompilierung 94
2.4.2?Namespaces 95
2.4.3?Fehlerbehandlung 96
2.4.3.1?Ausnahmen 97
2.4.3.2?Invarianten 98
2.4.3.3?Statische Assertionen 99
2.5?Nachbemerkung 100
2.6?Ratschläge 100
3 Eine Rundreise durch C++: Abstraktionsmechanismen 102
3.1?Einführung 102
3.2?Klassen 103
3.2.1?Konkrete Typen 103
3.2.1.1?Ein arithmetischer Typ 104
3.2.1.2?Ein Container 106
3.2.1.3?Container initialisieren 107
3.2.2?Abstrakte Typen 108
3.2.3?Virtuelle Funktionen 111
3.2.4?Klassenhierarchien 112
3.3?Kopieren und verschieben 116
3.3.1?Container kopieren 116
3.3.2?Container verschieben 118
3.3.3?Ressourcenverwaltung 120
3.3.4?Operationen unterdrücken 121
3.4?Templates 122
3.4.1?Parametrisierte Typen 122
3.4.2?Funktions-Templates 123
3.4.3?Funktionsobjekte 124
3.4.4?Variadische Templates 127
3.4.5?Alias 128
3.5?Ratschläge 129
4 Eine Rundreise durch C++: Container und Algorithmen 130
4.1?Bibliotheken 130
4.1.1?Überblick über die Standardbibliothek 131
4.1.2?Header und Namespace der Standardbibliothek 132
4.2?Strings 133
4.3?Stream-Ein-/Ausgabe 135
4.3.1?Ausgabe 135
4.3.2?Eingabe 136
4.3.3?Ein-/Ausgabe von benutzerdefinierten Typen 137
4.4?Container 139
4.4.1?vector 139
4.4.1.1?Elemente 141
4.4.1.2?Bereichsüberprüfung 141
4.4.2?list 142
4.4.3?map 144
4.4.4?unordered_map 145
4.4.5?Überblick über Container 145
4.5?Algorithmen 147
4.5.1?Iteratoren verwenden 148
4.5.2?Iteratortypen 150
4.5.3?Stream-Iteratoren 151
4.5.4?Prädikate 153
4.5.5?Überblick über Algorithmen 153
4.5.6?Containeralgorithmen 154
4.6?Ratschläge 155
5 Eine Rundreise durch C++: Nebenläufigkeit und Dienstprogramme 156
5.1?Einführung 156
5.2?Ressourcenverwaltung 156
5.2.1?unique_ptr und shared_ptr 157
5.3?Nebenläufigkeit 159
5.3.1?Tasks und Threads 160
5.3.2?Argumente übergeben 161
5.3.3?Ergebnisse zurückgeben 162
5.3.4?Daten gemeinsam nutzen 162
5.3.4.1?Warten auf Ereignisse 164
5.3.5?Kommunizierende Tasks 165
5.3.5.1?future und promise 166
5.3.5.2?packaged_task 167
5.3.5.3?async() 168
5.4?Kleine Hilfskomponenten 169
5.4.1?Zeit 169
5.4.2?Typfunktionen 170
5.4.2.1?iterator_traits 170
5.4.2.2?Typprädikate 172
5.4.3?pair und tuple 173
5.5?Reguläre Ausdrücke 174
5.6?Mathematik 175
5.6.1?Mathematische Funktionen und Algorithmen 175
5.6.2?Komplexe Zahlen 175
5.6.3?Zufallszahlen 176
5.6.4?Vektorarithmetik 178
5.6.5?Numerische Grenzen 179
5.7?Ratschläge 179
Teil II Grundlegende Sprachelemente 180
6 Typen und Deklarationen 182
6.1?Der ISO-C++-Standard 182
6.1.1?Implementierungen 184
6.1.2?Der grundlegende Quellzeichensatz 184
6.2?Typen 185
6.2.1?Fundamentale Typen 185
6.2.2?Boolesche Typen 186
6.2.3?Zeichentypen 188
6.2.3.1?Vorzeichenbehaftete und vorzeichenlose Zeichen 190
6.2.3.2?Zeichenliterale 191
6.2.4?Ganzzahltypen 193
6.2.4.1?Ganzzahlliterale 193
6.2.4.2?Typen von Ganzzahlliteralen 194
6.2.5?Gleitkommatypen 195
6.2.5.1?Gleitkommaliterale 195
6.2.6?Präfixe und Suffixe 196
6.2.7?void 197
6.2.8?Größen 197
6.2.9?Ausrichtung 200
6.3?Deklarationen 201
6.3.1?Die Struktur von Deklarationen 203
6.3.2?Mehrere Namen deklarieren 204
6.3.3?Namen 205
6.3.3.1?Schlüsselwörter 206
6.3.4?Gültigkeitsbereiche 207
6.3.5?Initialisierung 209
6.3.5.1?Fehlende Initialisierer 212
6.3.5.2?Initialisierungslisten 213
6.3.6?Einen Typ herleiten: auto und decltype() 214
6.3.6.1?Der Typspezifizierer auto 214
6.3.6.2?auto und {}-Listen 215
6.3.6.3?Der Spezifizierer decltype() 216
6.4?Objekte und Werte 217
6.4.1?L-Werte und R-Werte 217
6.4.2?Lebensdauer von Objekten 218
6.5?Typalias 219
6.6?Ratschläge 220
7 Zeiger, Arrays und Referenzen 222
7.1?Einführung 222
7.2?Zeiger 222
7.2.1?void* 223
7.2.2?nullptr 224
7.3?Arrays 225
7.3.1?Array-Initialisierer 226
7.3.2?Stringliterale 227
7.3.2.1?Rohe Zeichen-Strings 229
7.3.2.2?Größere Zeichensätze 230
7.4?Zeiger auf Arrays 231
7.4.1?Navigieren in Arrays 233
7.4.2?Mehrdimensionale Arrays 235
7.4.3?Arrays übergeben 236
7.5?Zeiger und const 238
7.6?Zeiger und Besitz 240
7.7?Referenzen 241
7.7.1?L-Wert-Referenzen 243
7.7.2?R-Wert-Referenzen 246
7.7.3?Referenzen auf Referenzen 249
7.7.4?Zeiger und Referenzen 250
7.8?Ratschläge 252
8 Strukturen, Unions und Aufzählungen 254
8.1?Einführung 254
8.2?Strukturen 254
8.2.1?Layout einer Struktur 256
8.2.2?Namen von Strukturen 257
8.2.3?Strukturen und Klassen 259
8.2.4?Strukturen und Arrays 260
8.2.5?Typäquivalenz 262
8.2.6?Plain Old Data 263
8.2.7?Felder 265
8.3?Unions 266
8.3.1?Unions und Klassen 268
8.3.2?Anonyme Unions 269
8.4?Aufzählungen 272
8.4.1?Aufzählungsklassen 272
8.4.2?Einfache Aufzählungen 276
8.4.3?Unbenannte Aufzählungen 278
8.5?Ratschläge 278
9 Anweisungen 280
9.1?Einführung 280
9.2?Zusammenfassung der Anweisungen 280
9.3?Deklarationen als Anweisungen 282
9.4?Auswahlanweisungen 283
9.4.1?if-Anweisungen 283
9.4.2?switch-Anweisungen 285
9.4.2.1?Deklarationen in case-Zweigen 287
9.4.3?Deklarationen in Bedingungen 287
9.5?Schleifenanweisungen 288
9.5.1?Bereichsbasierte for-Anweisungen 289
9.5.2?for-Anweisungen 290
9.5.3?while-Anweisungen 291
9.5.4?do-Anweisungen 292
9.5.5?Schleifen verlassen 292
9.6?goto-Anweisungen 293
9.7?Kommentare und Einrückungen 294
9.8?Ratschläge 296
10 Ausdrücke 298
10.1?Einführung 298
10.2?Ein Taschenrechner 298
10.2.1?Der Parser 299
10.2.2?Eingabe 303
10.2.3?Low-level-Eingabe 307
10.2.4?Fehlerbehandlung 309
10.2.5?Das Rahmenprogramm 309
10.2.6?Header 310
10.2.7?Befehlszeilenargumente 311
10.2.8?Eine Anmerkung zum Stil 312
10.3?Zusammenfassung der Operatoren 313
10.3.1?Ergebnisse 317
10.3.2?Reihenfolge der Auswertung 318
10.3.3?Operatorrangfolge 319
10.3.4?Temporäre Objekte 320
10.4?Konstante Ausdrücke 322
10.4.1?Symbolische Konstanten 324
10.4.2?const-Typen in konstanten Ausdrücken 325
10.4.3?Literale Typen 325
10.4.4?Referenzargumente 326
10.4.5?Adresse konstanter Ausdrücke 327
10.5?Implizite Typkonvertierung 327
10.5.1?Heraufstufungen 328
10.5.2?Konvertierungen 328
10.5.2.1?Integrale Konvertierungen 329
10.5.2.2?Gleitkommakonvertierungen 329
10.5.2.3?Zeiger- und Referenzkonvertierungen 330
10.5.2.4?Zeiger-auf-Member-Konvertierungen 330
10.5.2.5?Boolesche Konvertierungen 330
10.5.2.6?Gleitkomma-Ganzzahl-Konvertierungen 331
10.5.3?Übliche arithmetische Konvertierungen 332
10.6?Ratschläge 332
11 Auswahloperationen 334
11.1?Diverse Operatoren 334
11.1.1?Logische Operatoren 334
11.1.2?Bitweise logische Operatoren 334
11.1.3?Bedingte Ausdrücke 336
11.1.4?Inkrementieren und Dekrementieren 336
11.2?Freispeicher 338
11.2.1?Speicherverwaltung 340
11.2.2?Arrays 343
11.2.3?Speicherplatz beschaffen 344
11.2.4?Überladen von new 345
11.2.4.1?nothrow new 347
11.3?Listen 348
11.3.1?Implementierungsmodell 348
11.3.2?Qualifizierte Listen 350
11.3.3?Unqualifizierte Listen 350
11.4?Lambda-Ausdrücke 352
11.4.1?Implementierungsmodelle 353
11.4.2?Alternativen für Lambda-Ausdrücke 354
11.4.3?Erfassung 356
11.4.3.1?Lambda und Lebensdauer 358
11.4.3.2?Namen von Namespaces 359
11.4.3.3?Lambda und this 359
11.4.3.4?Veränderbare Lambda-Ausdrücke 359
11.4.4?Aufruf und Rückgabe 360
11.4.5?Der Typ eines Lambda-Ausdrucks 360
11.5?Explizite Typumwandlung 361
11.5.1?Konstruktion 363
11.5.2?Benannte Typumwandlungen 364
11.5.3?C-Typumwandlungen 366
11.5.4?Funktionale Typumwandlung 366
11.6?Ratschläge 367
12 Funktionen 368
12.1?Funktionsdeklarationen 368
12.1.1?Warum Funktionen? 369
12.1.2?Bestandteile einer Funktionsdeklaration 369
12.1.3?Funktionsdefinitionen 370
12.1.4?Werte zurückgeben 372
12.1.5?Inline-Funktionen 374
12.1.6?constexpr-Funktionen 375
12.1.6.1?constexpr und Referenzen 376
12.1.6.2?Bedingte Auswertung 377
12.1.7?[[noreturn]]-Funktionen 377
12.1.8?Lokale Variablen 378
12.2?Argumentübergabe 379
12.2.1?Referenzargumente 380
12.2.2?Array-Argumente 382
12.2.3?Listenargumente 384
12.2.4?Nicht angegebene Anzahl von Argumenten 385
12.2.5?Standardargumente 389
12.3?Überladene Funktionen 391
12.3.1?Automatische Auflösung von Überladungen 391
12.3.2?Überladen und Rückgabetyp 393
12.3.3?Überladen und Gültigkeitsbereiche 394
12.3.4?Auflösung für mehrere Argumente 395
12.3.5?Manuelle Auflösung von Überladungen 395
12.4?Vor- und Nachbedingungen 396
12.5?Zeiger auf Funktion 398
12.6?Makros 402
12.6.1?Bedingte Übersetzung 405
12.6.2?Vordefinierte Makros 406
12.6.3?Pragmas 407
12.7?Ratschläge 407
13 Ausnahmenbehandlung 410
13.1?Fehlerbehandlung 410
13.1.1?Ausnahmen 411
13.1.2?Herkömmliche Fehlerbehandlung 413
13.1.3?Durchhangeln 414
13.1.4?Alternative Ansichten von Ausnahmen 415
13.1.4.1?Asynchrone Ereignisse 415
13.1.4.2?Ausnahmen, die keine Fehler sind 415
13.1.5?Wann Sie keine Ausnahmen verwenden können 416
13.1.6?Hierarchische Fehlerbehandlung 417
13.1.7?Ausnahmen und Effizienz 419
13.2?Ausnahmegarantien 421
13.3?Ressourcenverwaltung 423
13.3.1?finally 426
13.4?Invarianten erzwingen 428
13.5?Ausnahmen auslösen und abfangen 433
13.5.1?Ausnahmen auslösen 433
13.5.1.1?noexcept-Funktionen 435
13.5.1.2?Der Operator noexcept 435
13.5.1.3?Ausnahmespezifikationen 436
13.5.2?Ausnahmen abfangen 437
13.5.2.1?Ausnahmen erneut auslösen 438
13.5.2.2?Jede Ausnahme abfangen 439
13.5.2.3?Mehrere Handler 440
13.5.2.4?try-Blöcke in Funktionen 440
13.5.2.5?Beendigung 442
13.5.3?Ausnahmen und Threads 444
13.6?Eine vector-Implementierung 445
13.6.1?Ein einfacher vector 445
13.6.2?Speicher explizit darstellen 449
13.6.3?Zuweisung 452
13.6.4?Größe ändern 454
13.6.4.1?reserve() 455
13.6.4.2?resize() 456
13.6.4.3?push_back() 456
13.6.4.4?Abschließende Gedanken 457
13.7?Ratschläge 458
14 Namespaces 460
14.1?Kompositionsprobleme 460
14.2?Namespaces 461
14.2.1?Explizite Qualifizierung 463
14.2.2?using-Deklarationen 464
14.2.3?using-Direktiven 465
14.2.4?Argumentabhängige Namensauflösung 466
14.2.5?Namespaces sind offen 469
14.3?Modularisierung und Schnittstellen 470
14.3.1?Namespaces als Module 471
14.3.2?Implementierungen 473
14.3.3?Schnittstellen und Implementierungen 475
14.4?Komposition mit Namespaces 477
14.4.1?Komfort vs. Sicherheit 477
14.4.2?Namespace-Alias 478
14.4.3?Namespaces zusammensetzen 479
14.4.4?Komposition und Auswahl 480
14.4.5?Namespaces und Überladen 481
14.4.6?Versionsverwaltung 483
14.4.7?Verschachtelte Namespaces 485
14.4.8?Unbenannte Namespaces 486
14.4.9?C-Header 487
14.5?Ratschläge 488
15 Quelldateien und Programme 490
15.1?Separate Übersetzung 490
15.2?Binden 491
15.2.1?Dateilokale Namen 494
15.2.2?Header-Dateien 495
15.2.3?Die Eine-Definition-Regel 497
15.2.4?Header der Standardbibliothek 499
15.2.5?Binden mit Nicht-C++-Code 500
15.2.6?Binden und Zeiger auf Funktionen 502
15.3?Header-Dateien verwenden 503
15.3.1?Organisation mit einzelnem Header 503
15.3.2?Organisation mit mehreren Header-Dateien 507
15.3.2.1?Andere Taschenrechnermodule 510
15.3.2.2?Header verwenden 512
15.3.3?Include-Wächter 513
15.4?Programme 514
15.4.1?Initialisierung von nichtlokalen Variablen 514
15.4.2?Initialisierung und Nebenläufigkeit 515
15.4.3?Programmbeendigung 516
15.5?Ratschläge 518
Teil III Abstraktions­mechanismen 520
16 Klassen 522
16.1?Einführung 522
16.2?Grundlagen von Klassen 523
16.2.1?Member-Funktionen 524
16.2.2?Standardmäßiges Kopieren 525
16.2.3?Zugriffskontrolle 526
16.2.4?class und struct 527
16.2.5?Konstruktoren 529
16.2.6?Explizite Konstruktoren 531
16.2.7?Klasseninterne Initialisierer 533
16.2.8?Klasseninterne Funktionsdefinitionen 534
16.2.9?Veränderlichkeit 535
16.2.9.1?Konstante Member-Funktionen 535
16.2.9.2?Physische und logische Konstanz 536
16.2.9.3?mutable 537
16.2.9.4?Veränderlichkeit über Indirektion 537
16.2.10?Selbstreferenz 538
16.2.11?Member-Zugriff 540
16.2.12?Statische Member 541
16.2.13?Member-Typen 543
16.3?Konkrete Klassen 544
16.3.1?Member-Funktionen 547
16.3.2?Hilfsfunktionen 550
16.3.3?Überladene Operatoren 551
16.3.4?Der Stellenwert von konkreten Klassen 552
16.4?Ratschläge 553
17 Konstruieren, Aufräumen, Kopieren und Verschieben 556
17.1?Einführung 556
17.2?Konstruktoren und Destruktoren 558
17.2.1?Konstruktoren und Invarianten 559
17.2.2?Destruktoren und Ressourcen 560
17.2.3?Basis- und Member-Destruktoren 561
17.2.4?Konstruktoren und Destruktoren aufrufen 562
17.2.5?Virtuelle Destruktoren 563
17.3?Initialisierung von Klassenobjekten 564
17.3.1?Initialisierung ohne Konstruktoren 564
17.3.2?Initialisierung mithilfe von Konstruktoren 566
17.3.2.1?Initialisierung durch Konstruktoren 568
17.3.3?Standardkonstruktoren 569
17.3.4?Initialisierungslisten-Konstruktoren 571
17.3.4.1?Mehrdeutigkeiten bei Initialisierungslisten-Konstruktoren auflösen 572
17.3.4.2?Initialisierungslisten verwenden 573
17.3.4.3?Direkte und Kopierinitialisierung 574
17.4 Initialisierung von Membern und Basisklassen 576
17.4.1?Member-Initialisierung 576
17.4.1.1?Member-Initialisierung und -Zuweisung 577
17.4.2?Basisklassen-Initialisierer 578
17.4.3?Konstruktoren delegieren 578
17.4.4?Klasseninterne Initialisierer 579
17.4.5?Initialisierer statischer Member 581
17.5?Kopieren und verschieben 582
17.5.1?Kopieren 583
17.5.1.1?Vorsicht vor Standardkonstruktoren 585
17.5.1.2?Kopieren von Basisklassen 585
17.5.1.3?Was Kopieren bedeutet 586
17.5.1.4?Slicing 589
17.5.2?Verschieben 590
17.6?Standardoperationen generieren 594
17.6.1?Explizite Standardoperationen 595
17.6.2?Standardoperationen 596
17.6.3?Standardoperationen verwenden 597
17.6.3.1?Standardkonstruktoren 597
17.6.3.2?Invarianten bewahren 597
17.6.3.3?Ressourceninvarianten 598
17.6.3.4?Partiell spezifizierte Invarianten 599
17.6.4?Gelöschte Funktionen 601
17.7?Ratschläge 603
18 Überladen von Operatoren 606
18.1?Einführung 606
18.2?Operatorfunktionen 608
18.2.1?Binäre und unäre Operatoren 609
18.2.2?Vordefinierte Bedeutungen für Operatoren 610
18.2.3?Operatoren und benutzerdefinierte Typen 611
18.2.4?Objekte übergeben 611
18.2.5?Operatoren in Namespaces 613
18.3?Ein Typ für komplexe Zahlen 615
18.3.1?Member- und Nicht-Member-Operatoren 615
18.3.2?Arithmetik mit gemischten Datentypen 616
18.3.3?Konvertierungen 617
18.3.3.1?Konvertierung von Operanden 619
18.3.4?Literale 620
18.3.5?Zugriffsfunktionen 621
18.3.6?Hilfsfunktionen 622
18.4?Typumwandlung 623
18.4.1?Konvertierungsoperatoren 623
18.4.2?Explizite Konvertierungsoperatoren 625
18.4.3?Mehrdeutigkeiten 626
18.5?Ratschläge 628
19 Spezielle Operatoren 630
19.1?Einführung 630
19.2?Spezielle Operatoren 630
19.2.1?Indizierung 630
19.2.2?Funktionsaufruf 631
19.2.3?Dereferenzieren 633
19.2.4?Inkrementieren und Dekrementieren 635
19.2.5?Allokation und Deallokation 637
19.2.6?Benutzerdefinierte Literale 639
19.3?Eine String-Klasse 642
19.3.1?Wesentliche Operationen 643
19.3.2?Zugriff auf Zeichen 643
19.3.3?Darstellung 644
19.3.3.1?Ergänzende Funktionen 646
19.3.4?Member-Funktionen 647
19.3.5?Hilfsfunktionen 650
19.3.6?Unsere String-Klasse verwenden 652
19.4?Friends 652
19.4.1?Friends finden 654
19.4.2?Friends und Member 655
19.5?Ratschläge 657
20 Abgeleitete Klassen 660
20.1?Einführung 660
20.2?Abgeleitete Klassen 661
20.2.1?Member-Funktionen 664
20.2.2?Konstruktoren und Destruktoren 665
20.3?Klassenhierarchien 666
20.3.1?Typfelder 666
20.3.2?Virtuelle Funktionen 669
20.3.3?Explizite Qualifizierung 672
20.3.4?Überschreiben steuern 672
20.3.4.1?override 674
20.3.4.2?final 675
20.3.5?Member der Basisklasse verwenden 677
20.3.5.1?Konstruktoren vererben 678
20.3.6?Lockerung bei Rückgabetypen 680
20.4?Abstrakte Klassen 682
20.5?Zugriffskontrolle 684
20.5.1?Geschützte Member 688
20.5.1.1?Geschützte Member verwenden 689
20.5.2?Zugriff auf Basisklassen 689
20.5.2.1?Mehrfachvererbung und Zugriffskontrolle 690
20.5.3?using-Deklarationen und Zugriffskontrolle 691
20.6?Zeiger auf Member 692
20.6.1?Zeiger auf Funktions-Member 692
20.6.2?Zeiger auf Daten-Member 694
20.6.3?Basis- und abgeleitete Member 695
20.7?Ratschläge 696
21 Klassenhierarchien 698
21.1?Einführung 698
21.2?Klassenhierarchien entwerfen 698
21.2.1?Implementierungsvererbung 699
21.2.1.1?Kritische Betrachtungen 702
21.2.2?Schnittstellenvererbung 703
21.2.3?Alternative Implementierungen 705
21.2.3.1?Kritische Betrachtungen 708
21.2.4?Objekterstellung örtlich begrenzen 709
21.3?Mehrfachvererbung 710
21.3.1?Mehrfachschnittstellen 711
21.3.2?Mehrere Implementierungsklassen 711
21.3.3?Auflösung von Mehrdeutigkeiten 713
21.3.4?Eine Basisklasse wiederholt verwenden 717
21.3.5?Virtuelle Basisklassen 718
21.3.5.1?Virtuelle Basisklassen konstruieren 721
21.3.5.2?Member einer virtuellen Klasse nur einmal aufrufen 722
21.3.6?Replizierte und virtuelle Basisklassen 724
21.3.6.1?Funktionen virtueller Basisklassen überschreiben 726
21.4?Ratschläge 727
22 Laufzeit-Typinformationen 728
22.1?Einführung 728
22.2?Navigation in der Klassenhierarchie 728
22.2.1?dynamic_cast 730
22.2.1.1?dynamic_cast in Referenz 732
22.2.2?Mehrfachvererbung 733
22.2.3?static_cast und dynamic_cast 735
22.2.4?Eine Schnittstelle zurückgewinnen 736
22.3?Doppelte Bindung und Besucher 740
22.3.1?Doppelte Bindung 741
22.3.2?Besucher 743
22.4?Konstruktion und Destruktion 745
22.5?Typidentifizierung 746
22.5.1?Erweiterte Typinformationen 748
22.6?RTTI – richtig und falsch eingesetzt 749
22.7?Ratschläge 751
23 Templates 754
23.1?Einführung und Überblick 754
23.2?Ein einfaches String-Template 757
23.2.1?Ein Template definieren 759
23.2.2?Template-Instanziierung 760
23.3?Typprüfung 761
23.3.1?Typäquivalenz 763
23.3.2?Fehlererkennung 764
23.4?Member von Klassen-Templates 765
23.4.1?Daten-Member 765
23.4.2?Member-Funktionen 766
23.4.3?Member-Typalias 766
23.4.4?Statische Member 767
23.4.5?Member-Typen 767
23.4.6?Member-Templates 768
23.4.6.1?Templates und Konstruktoren 769
23.4.6.2?Templates und virtual 770
23.4.6.3?Verschachtelungen 770
23.4.7?Friends 773
23.5?Funktions-Templates 774
23.5.1?Argumente von Funktions-Templates 776
23.5.2?Funktions-Template-Argumente herleiten 777
23.5.2.1?Referenzherleitung 778
23.5.3?Überladen von Funktions-Templates 780
23.5.3.1?Mehrdeutigkeiten auflösen 781
23.5.3.2?Fehler bei Argumentersetzung 782
23.5.3.3?Überladen und Ableitung 784
23.5.3.4?Überladen und nicht hergeleitete Parameter 784
23.6?Template-Alias 785
23.7?Quellcodeorganisation 786
23.7.1?Binden 788
23.8?Ratschläge 789
24 Generische Programmierung 792
24.1?Einführung 792
24.2?Algorithmen und Lifting 793
24.3?Konzepte 797
24.3.1?Ein Konzept erkennen 798
24.3.2?Konzepte und Einschränkungen 801
24.4?Konzepte konkret machen 803
24.4.1?Axiome 807
24.4.2?Konzepte mit mehreren Argumenten 808
24.4.3?Wertkonzepte 810
24.4.4?Einschränkungsüberprüfungen 810
24.4.5?Überprüfung von Template-Definitionen 812
24.5?Ratschläge 814
25 Spezialisierung 816
25.1?Einführung 816
25.2?Template-Parameter und -Argumente 817
25.2.1?Typen als Argumente 817
25.2.2?Werte als Argumente 819
25.2.3?Operationen als Argumente 821
25.2.4?Templates als Argumente 823
25.2.5?Template-Standardargumente 824
25.2.5.1?Standardargumente bei Funktions-Templates 825
25.3?Spezialisierung 826
25.3.1?Schnittstellenspezialisierung 829
25.3.1.1?Implementierungsspezialisierung 830
25.3.2?Das primäre Template 830
25.3.3?Reihenfolge der Spezialisierung 832
25.3.4?Funktions-Template-Spezialisierung 833
25.3.4.1?Spezialisierung und Überladen 833
25.3.4.2?Spezialisierung, die kein Überladen ist 834
25.4?Ratschläge 835
26 Instanziierung 836
26.1?Einführung 836
26.2?Template-Instanziierung 837
26.2.1?Wann wird Instanziierung gebraucht? 838
26.2.2?Manuelle Kontrolle der Instanziierung 839
26.3?Namensbindung 840
26.3.1?Abhängige Namen 842
26.3.2?Bindung am Punkt der Definition 844
26.3.3?Bindung am Punkt der Instanziierung 845
26.3.4?Mehrere Punkte der Instanziierung 847
26.3.5?Templates und Namespaces 849
26.3.6?Zu aggressive ADL 850
26.3.7?Namen aus Basisklassen 852
26.4?Ratschläge 854
27 Templates und Hierarchien 856
27.1?Einführung 856
27.2?Parametrisierung und Hierarchie 857
27.2.1?Generierte Typen 859
27.2.2?Template-Konvertierungen 861
27.3?Hierarchien von Klassen-Templates 862
27.3.1?Templates als Schnittstellen 864
27.4?Template-Parameter als Basisklassen 864
27.4.1?Datenstrukturen zusammensetzen 865
27.4.2?Klassenhierarchien linearisieren 869
27.5?Ratschläge 874
28 Metaprogrammierung 876
28.1?Einführung 876
28.2?Typfunktionen 878
28.2.1?Typalias 881
28.2.1.1?Wann man keinen Alias verwendet 882
28.2.2?Typprädikate 883
28.2.3?Eine Funktion auswählen 885
28.2.4?Traits 885
28.3?Steuerungsstrukturen 887
28.3.1?Auswahl 887
28.3.1.1?Zwischen zwei Typen auswählen 888
28.3.1.2?Übersetzungszeit versus Laufzeit 888
28.3.1.3?Zwischen mehreren Typen auswählen 890
28.3.2?Iteration und Rekursion 891
28.3.2.1?Rekursion mit Klassen 892
28.3.3?Wann man Metaprogrammierung verwendet 892
28.4?Bedingte Definition: Enable_if 894
28.4.1?Enable_if verwenden 895
28.4.2?Enable_if implementieren 897
28.4.3?Enable_if und Konzepte 898
28.4.4?Weitere Beispiele mit Enable_if 898
28.5?Eine Liste zur Übersetzungszeit: Tuple 901
28.5.1?Eine einfache Ausgabefunktion 903
28.5.2?Elementzugriff 904
28.5.2.1?Konstante Tupel 906
28.5.3?make_tuple 907
28.6?Variadische Templates 908
28.6.1?Eine typsichere printf()-Funktion 908
28.6.2?Technische Details 911
28.6.3?Weiterleitung 913
28.6.4?Der Typ tuple der Standardbibliothek 914
28.7?Beispiel: SI-Einheiten 918
28.7.1?Einheiten 918
28.7.2?Größen 919
28.7.3?Literale für Einheiten 921
28.7.4?Hilfsfunktionen 923
28.8?Ratschläge 924
29 Ein Matrix-Design 926
29.1?Einführung 926
29.1.1?Einfache Anwendungen von Matrix 926
29.1.2?Anforderungen an Matrix 928
29.2?Ein Matrix-Template 929
29.2.1?Konstruktion und Zuweisung 931
29.2.2?Indizierung und Slicing 932
29.3?Arithmetische Matrix-Operationen 935
29.3.1?Skalaroperationen 936
29.3.2?Addition 936
29.3.3?Multiplikation 938
29.4?Matrix-Implementierung 940
29.4.1?slice() 940
29.4.2?Matrix-Slices 940
29.4.3?Matrix_ref 942
29.4.4?Matrix-Listeninitialisierung 943
29.4.5?Matrix-Zugriff 945
29.4.6?Nulldimensionale Matrix 948
29.5?Lineare Gleichungen lösen 949
29.5.1?Das klassische gaußsche Eliminationsverfahren 950
29.5.2?Pivotisierung 951
29.5.3?Testen 952
29.5.4?Verschmolzene Operationen 953
29.6?Ratschläge 956
Teil IVDie Standardbibliothek 958
30 Überblick über die Standardbibliothek 960
30.1?Einführung 960
30.1.1?Komponenten der Standardbibliothek 961
30.1.2?Designeinschränkungen 962
30.1.3?Beschreibungsstil 964
30.2?Header 964
30.3?Sprachunterstützung 969
30.3.1?Unterstützung für Initialisierungslisten 969
30.3.2?Unterstützung für bereichsbasierte for-Anweisung 970
30.4?Fehlerbehandlung 970
30.4.1?Ausnahmen 971
30.4.1.1?Die Hierarchie der Standardausnahmen 972
30.4.1.2?Weiterleitung von Ausnahmen 973
30.4.1.3?terminate() 976
30.4.2?Assertionen 976
30.4.3?system_error 977
30.4.3.1?Fehlercodes 978
30.4.3.2?Fehlerkategorien 980
30.4.3.3?system_error-Ausnahme 981
30.4.3.4?Potenziell portable Fehlerbedingungen 982
30.4.3.5?Fehlercodes zuordnen 982
30.4.3.6?errc-Fehlercodes 984
30.4.3.7?future_errc-Fehlercodes 987
30.4.3.8?io_errc-Fehlercodes 987
30.5?Ratschläge 987
31 STL-Container 990
31.1?Einführung 990
31.2?Überblick über Container 990
31.2.1?Containerdarstellung 993
31.2.2?Anforderungen an die Elemente 995
31.2.2.1?Vergleiche 996
31.2.2.2?Andere relationale Operatoren 997
31.3?Operatoren im Überblick 998
31.3.1?Member-Typen 1001
31.3.2?Konstruktoren, Destruktor und Zuweisungen 1002
31.3.3?Größe und Kapazität 1004
31.3.4?Iteratoren 1004
31.3.5?Elementzugriff 1006
31.3.6?Stack-Operationen 1006
31.3.7?Listenoperationen 1007
31.3.8?Andere Operationen 1008
31.4?Container 1009
31.4.1?vector 1009
31.4.1.1?vector und Wachstum 1009
31.4.1.2?vector und Verschachtelung 1011
31.4.1.3?vector und Arrays 1013
31.4.1.4?vector und string 1013
31.4.2?Listen 1014
31.4.3?Assoziative Container 1016
31.4.3.1?Geordnete assoziative Container 1017
31.4.3.2?Ungeordnete assoziative Container 1021
31.4.3.3?Ungeordnete Maps konstruieren 1022
31.4.3.4?Hash- und Gleichheitsfunktionen 1024
31.4.3.5?Lastfaktor und Buckets 1027
31.5?Containeradapter 1028
31.5.1?stack 1029
31.5.2?queue 1031
31.5.3?priority_queue 1031
31.6?Ratschläge 1032
32 STL-Algorithmen 1036
32.1?Einführung 1036
32.2?Algorithmen 1036
32.2.1?Sequenzen 1037
32.3?Richtlinienargumente 1038
32.3.1?Komplexität 1040
32.4 Nichtmodifizierende Sequenz­algorithmen 1041
32.4.1?for_each() 1041
32.4.2?Sequenzprädikate 1041
32.4.3?count() 1042
32.4.4?find() 1042
32.4.5?equal() und mismatch() 1043
32.4.6?search() 1044
32.5?Modifizierende Sequenzalgorithmen 1045
32.5.1?copy() 1046
32.5.2?unique() 1047
32.5.3?remove(), reverse() und replace() 1048
32.5.4?rotate(), random_shuffle() und partition() 1049
32.5.5?Permutationen 1050
32.5.6?fill() 1051
32.5.7?swap() 1052
32.6?Sortieren und Suchen 1053
32.6.1?Binäre Suche 1056
32.6.2?merge() 1057
32.6.3?Mengenalgorithmen 1058
32.6.4?Heaps 1059
32.6.5?lexicographical_compare() 1061
32.7?Minimum und Maximum 1061
32.8?Ratschläge 1063
33 STL-Iteratoren 1064
33.1?Einführung 1064
33.1.1?Iteratormodell 1064
33.1.2?Iteratorkategorien 1066
33.1.3?Iterator-Traits 1067
33.1.4?Iteratoroperationen 1070
33.2?Iteratoradapter 1071
33.2.1?Reverse-Iteratoren 1071
33.2.2?Einfügeiteratoren 1074
33.2.3?Verschiebeiteratoren 1075
33.3?Bereichszugriffsfunktionen 1076
33.4?Funktionsobjekte 1077
33.5?Funktionsadapter 1078
33.5.1?bind() 1079
33.5.2?mem_fn() 1081
33.5.3?function 1081
33.6?Ratschläge 1084
34 Speicher und Ressourcen 1086
34.1?Einführung 1086
34.2?„Beinahe-Container“ 1086
34.2.1?array 1087
34.2.2?bitset 1090
34.2.2.1?Konstruktoren 1091
34.2.2.2?bitset-Operationen 1093
34.2.3?vector< bool>
34.2.4?Tupel 1096
34.2.4.1?pair 1096
34.2.4.2?tuple 1098
34.3?Ressourcenverwaltungszeiger 1100
34.3.1?unique_ptr 1101
34.3.2?shared_ptr 1104
34.3.3?weak_ptr 1108
34.4?Allokatoren 1111
34.4.1?Der Standard-Allokator 1112
34.4.2?Allokator-Traits 1114
34.4.3?Zeiger-Traits 1115
34.4.4?Allokatoren mit eigenem Gültigkeitsbereich 1115
34.5?Die Schnittstelle zur Garbage Collection 1117
34.6?Nichtinitialisierter Speicher 1120
34.6.1?Temporäre Puffer 1121
34.6.2?raw_storage_iterator 1121
34.7?Ratschläge 1123
35 Utilities 1124
35.1?Einführung 1124
35.2?Zeit 1124
35.2.1?duration 1125
35.2.2?time_point 1128
35.2.3?Zeitgeber 1130
35.2.4?Zeit-Traits 1131
35.3 Rationale Arithmetik zur ­Übersetzungszeit 1132
35.4?Typfunktionen 1134
35.4.1?Typ-Traits 1134
35.4.2?Typgeneratoren 1139
35.5?Kleinere Utilities 1144
35.5.1?move() and forward() 1144
35.5.2?swap() 1145
35.5.3?Relationale Operatoren 1146
35.5.4?Vergleichen und Hashing von type_info 1147
35.6?Ratschläge 1148
36 Strings 1150
36.1?Einführung 1150
36.2?Zeichenklassifizierung 1150
36.2.1?Klassifizierungsfunktionen 1150
36.2.2?Zeichen-Traits 1152
36.3?Strings 1153
36.3.1?string im Vergleich zu C-Strings 1154
36.3.2?Konstruktoren 1156
36.3.3?Fundamentale Operationen 1158
36.3.4?String-Ein-/Ausgabe 1160
36.3.5?Numerische Konvertierungen 1160
36.3.6?STL-ähnliche Operationen 1162
36.3.7?Die find-Familie 1165
36.3.8?Teilstrings 1167
36.4?Ratschläge 1168
37 Reguläre Ausdrücke 1170
37.1?Reguläre Ausdrücke 1170
37.1.1?Notation regulärer Ausdrücke 1171
37.2?regex 1176
37.2.1?Übereinstimmungsergebnisse 1178
37.2.2?Formatierung 1181
37.3?Funktionen für reguläre Ausdrücke 1182
37.3.1?regex_match() 1182
37.3.2?regex_search() 1184
37.3.3?regex_replace() 1185
37.4?Iteratoren für reguläre Ausdrücke 1187
37.4.1?regex_iterator 1187
37.4.2?regex_token_iterator 1188
37.5?regex_traits 1191
37.6?Ratschläge 1192
38 E/A-Streams 1194
38.1?Einführung 1194
38.2?Die E/A-Stream-Hierarchie 1196
38.2.1?Datei-Streams 1197
38.2.2?String-Streams 1199
38.3?Fehlerbehandlung 1201
38.4?Ein-/Ausgabeoperationen 1203
38.4.1?Eingabeoperationen 1203
38.4.1.1?Formatierte Eingabe 1204
38.4.1.2?Unformatierte Eingabe 1205
38.4.2?Ausgabeoperationen 1206
38.4.2.1?Virtuelle Ausgabefunktionen 1208
38.4.3?Manipulatoren 1209
38.4.4?Stream-Status 1210
38.4.5?Formatierung 1214
38.4.5.1?Formatierungsstatus 1215
38.4.5.2?Standardmanipulatoren 1217
38.4.5.3?Benutzerdefinierte Manipulatoren 1220
38.5?Stream-Iteratoren 1222
38.6?Puffer 1223
38.6.1?Ausgabe-Streams und -puffer 1227
38.6.2?Eingabe-Streams und -puffer 1228
38.6.3?Pufferiteratoren 1229
38.6.3.1?istreambuf_iterator 1230
38.6.3.2?ostreambuf_iterator 1231
38.7?Ratschläge 1231
39 Locales 1234
39.1?Kulturelle Unterschiede behandeln 1234
39.2?Die Klasse locale 1237
39.2.1?Benannte Locales 1239
39.2.1.1?Neue Locales konstruieren 1242
39.2.2?Strings vergleichen 1243
39.3?Die Klasse facet 1244
39.3.1?Auf Facetten in einem Locale zugreifen 1245
39.3.2?Eine einfache benutzerdefinierte Facette 1246
39.3.3?Locales und Facetten verwenden 1249
39.4?Standardfacetten 1250
39.4.1?String-Vergleich 1252
39.4.1.1?Benannte collate-Facetten 1255
39.4.2?Numerische Formatierung 1255
39.4.2.1?Numerische Interpunktion 1256
39.4.2.2?Numerische Ausgabe 1257
39.4.2.3?Numerische Eingabe 1260
39.4.3?Formatierung von Geldbeträgen 1261
39.4.3.1?Interpunktion bei Geldbeträgen 1262
39.4.3.2?Ausgabe von Geldbeträgen 1265
39.4.3.3?Eingabe von Geldbeträgen 1266
39.4.4?Datum und Uhrzeit formatieren 1267
39.4.4.1?time_put 1267
39.4.4.2?time_get 1268
39.4.5?Zeichenklassifizierung 1270
39.4.6?Zeichencodes konvertieren 1274
39.4.7?Meldungen 1278
39.4.7.1?Meldungen von anderen Facetten verwenden 1281
39.5?Komfortschnittstellen 1282
39.5.1?Zeichenklassifizierung 1282
39.5.2?Zeichenkonvertierungen 1283
39.5.3?String-Konvertierungen 1283
39.5.4?Pufferkonvertierungen 1285
39.6?Ratschläge 1285
40 Numerische Berechnungen 1288
40.1?Einführung 1288
40.2?Numerische Grenzen 1288
40.2.1?Makros für Grenzwerte 1291
40.3?Mathematische Standardfunktionen 1292
40.4?Komplexe Zahlen 1294
40.5?Ein numerisches Array: valarray 1295
40.5.1?Konstruktoren und Zuweisungen 1296
40.5.2?Indizierung 1298
40.5.3?Operationen 1299
40.5.4?Slices 1302
40.5.5?slice_array 1304
40.5.6?Verallgemeinerte Slices 1305
40.6 Verallgemeinerte numerische ­Algorithmen 1306
40.6.1?accumulate() 1307
40.6.2?inner_product() 1308
40.6.3?partial_sum() und adjacent_difference() 1309
40.6.4?iota() 1310
40.7?Zufallszahlen 1310
40.7.1?Zufallszahlenmodule 1313
40.7.2?Zufallsgerät 1315
40.7.3?Verteilungen 1316
40.7.4?Zufallszahlen im Stil von C 1320
40.8?Ratschläge 1321
41 Nebenläufigkeit 1322
41.1?Einführung 1322
41.2?Speichermodelle 1324
41.2.1?Speicherstellen 1325
41.2.2?Umordnung von Befehlen 1326
41.2.3?Speicherordnung 1327
41.2.4?Data Races 1328
41.3?Atomare Datentypen 1330
41.3.1?Atomare Typen 1333
41.3.2?Flags und Fences 1338
41.3.3?Atomare Flags 1338
41.3.3.1?Fences 1339
41.4?volatile 1339
41.5?Ratschläge 1340
42 Threads und Tasks 1342
42.1?Einführung 1342
42.2?Threads 1342
42.2.1?Identität 1344
42.2.2?Konstruktion 1345
42.2.3?Zerstörung 1346
42.2.4?join() 1347
42.2.5?detach() 1348
42.2.6?Namespace this_thread 1350
42.2.7?Einen Thread vorzeitig beenden 1351
42.2.8?thread_local-Daten 1351
42.3?Data Races vermeiden 1353
42.3.1?Mutexe 1354
42.3.1.1?mutex und recursive_mutex 1355
42.3.1.2?mutex-Fehler 1357
42.3.1.3?timed_mutex und recursive_timed_mutex 1358
42.3.1.4?lock_guard und unique_lock 1359
42.3.2?Mehrere Sperren 1363
42.3.3?call_once() 1364
42.3.4?Bedingungsvariablen 1365
42.3.4.1?condition_variable_any 1370
42.4?Task-basierte Nebenläufigkeit 1371
42.4.1?future und promise 1372
42.4.2?promise 1373
42.4.3?packaged_task 1374
42.4.4?future 1377
42.4.5?shared_future 1380
42.4.6?async() 1381
42.4.7?Ein paralleles find()-Beispiel 1384
42.5?Ratschläge 1388
43 Die C-Standard­bibliothek 1390
43.1?Einführung 1390
43.2?Dateien 1390
43.3?Die printf()-Familie 1391
43.4?C-Strings 1396
43.5?Speicher 1397
43.6?Datum und Uhrzeit 1399
43.7?Diverses 1402
43.8?Ratschläge 1404
44 Kompatibilität 1406
44.1?Einführung 1406
44.2?C++11-Erweiterungen 1407
44.2.1?Sprachfeatures 1407
44.2.2?Komponenten der Standardbibliothek 1408
44.2.3?Veraltete Features 1409
44.2.4?Umgang mit älteren C++-Implementierungen 1410
44.3?C/C++-Kompatibilität 1411
44.3.1?C und C++ sind Geschwister 1411
44.3.2?„Stillschweigende“ Unterschiede 1413
44.3.3?C-Code, der kein C++ ist 1414
44.3.3.1?Probleme mit „klassischem C“ 1417
44.3.3.2?C-Features, die von C++ nicht übernommen wurden 1417
44.3.4?C++-Code, der kein C ist 1417
44.4?Ratschläge 1419
Index 1422

Erscheint lt. Verlag 7.4.2015
Übersetzer Frank Langenau
Verlagsort München
Sprache deutsch
Original-Titel The C++ Programming Language
Themenwelt Mathematik / Informatik Informatik Programmiersprachen / -werkzeuge
Schlagworte C++ • C++11 • Programmiersprache • Programmierung • Standard • Stroustrup
ISBN-10 3-446-43981-1 / 3446439811
ISBN-13 978-3-446-43981-8 / 9783446439818
Haben Sie eine Frage zum Produkt?
Wie bewerten Sie den Artikel?
Bitte geben Sie Ihre Bewertung ein:
Bitte geben Sie Daten ein:
PDFPDF (Wasserzeichen)
Größe: 11,4 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
Entwicklung von GUIs für verschiedene Betriebssysteme

von Achim Lingott

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
39,99
Das umfassende Handbuch

von Johannes Ernesti; Peter Kaiser

eBook Download (2023)
Rheinwerk Computing (Verlag)
44,90
Mit über 150 Workouts in Java und Python

von Luigi Lo Iacono; Stephan Wiefling; Michael Schneider

eBook Download (2023)
Carl Hanser Verlag GmbH & Co. KG
29,99