
Eine Tour durch C++
Description
Alles über E-Books | Antworten auf Fragen rund um E-Books, Kopierschutz und Dateiformate finden Sie in unserem Info- & Hilfebereich.
- 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«
Reviews / Votes
»Dem mitp-Verlag ist mit der Übersetzung der dritten Auflage des englischen Originals ein lesenswertes Buch gelungen, das sich zudem durch eine sinnvolle didaktische Struktur auszeichnet.« (Heise online, 10/2023)
»Wer in den letzten Jahren die oft chaotische Weiterentwicklung des C++ Standards nicht immer zu 100% aktiv verfolgt hat, findet hier ein Lehrbuch, das die guten Teile des objektorientierten Oldies gekonnt zu demonstrieren weiß.«
(Entwickler Magazin, 10/2023)
More details
Other editions
Additional editions

Person
Content
- Cover
- Titel
- Impressum
- Inhaltsverzeichnis
- Einleitung
- Danksagungen
- Über die Fachkorrektoren der deutschen Ausgabe
- Kapitel 1: Die Grundlagen
- 1.1 Einführung
- 1.2 Programme
- 1.2.1 Hello, World!
- 1.3 Funktionen
- 1.4 Typen, Variablen und Arithmetik
- 1.4.1 Rechenoperatoren
- 1.4.2 Initialisierung
- 1.5 Gültigkeitsbereich und Lebensdauer
- 1.6 Konstanten
- 1.7 Zeiger, Arrays und Referenzen
- 1.7.1 Der Null-Pointer
- 1.8 Bedingungen prüfen
- 1.9 Auf Hardware abbilden
- 1.9.1 Zuweisung
- 1.9.2 Initialisierung
- 1.10 Ratschläge
- Kapitel 2: Benutzerdefinierte Typen
- 2.1 Einführung
- 2.2 Strukturen
- 2.3 Klassen
- 2.4 Aufzählungen
- 2.5 Unions
- 2.6 Ratschläge
- Kapitel 3: Modularität
- 3.1 Einführung
- 3.2 Separates Kompilieren
- 3.2.1 Header-Dateien
- 3.2.2 Module
- 3.3 Namensräume
- 3.4 Funktionsargumente und Rückgabewerte
- 3.4.1 Argumentübergabe
- 3.4.2 Werterückgabe
- 3.4.3 Rückgabetyp ableiten
- 3.4.4 Suffix-Rückgabetyp
- 3.4.5 Strukturierte Bindung
- 3.5 Ratschläge
- Kapitel 4: Fehlerbehandlung
- 4.1 Einführung
- 4.2 Exceptions
- 4.3 Invarianten
- 4.4 Alternativen für die Fehlerbehandlung
- 4.5 Assertions
- 4.5.1 assert()
- 4.5.2 Statische Assertionen
- 4.5.3 noexcept
- 4.6 Ratschläge
- Kapitel 5: Klassen
- 5.1 Einführung
- 5.1.1 Klassen
- 5.2 Konkrete Typen
- 5.2.1 Ein arithmetischer Typ
- 5.2.2 Ein Container
- 5.2.3 Container initialisieren
- 5.3 Abstrakte Typen
- 5.4 Virtuelle Funktionen
- 5.5 Klassenhierarchien
- 5.5.1 Vorteile von Hierarchien
- 5.5.2 Die Navigation in einer Hierarchie
- 5.5.3 Ressourcenlecks vermeiden
- 5.6 Ratschläge
- Kapitel 6: Notwendige Operationen
- 6.1 Einführung
- 6.1.1 Notwendige Operationen
- 6.1.2 Konvertierungen
- 6.1.3 Member-Initialisierer
- 6.2 Kopieren und Verschieben
- 6.2.1 Container kopieren
- 6.2.2 Container verschieben
- 6.3 Ressourcenverwaltung
- 6.4 Operatoren überladen
- 6.5 Konventionelle Operationen
- 6.5.1 Vergleiche (Relationale Operatoren)
- 6.5.2 Container-Operationen
- 6.5.3 Iteratoren und »smarte Zeiger«
- 6.5.4 Eingabe- und Ausgabeoperationen
- 6.5.5 swap()
- 6.5.6 hash&&
- 6.6 Benutzerdefinierte Literale
- 6.7 Ratschläge
- Kapitel 7: Templates
- 7.1 Einführung
- 7.2 Parametrisierte Typen
- 7.2.1 Beschränkte Template-Argumente
- 7.2.2 Wert-Template-Argumente
- 7.2.3 Deduktion von Template-Argumenten
- 7.3 Parametrisierte Operationen
- 7.3.1 Funktions-Templates
- 7.3.2 Funktionsobjekte
- 7.3.3 Lambda-Ausdrücke
- 7.4 Template-Mechanismen
- 7.4.1 Variablen-Templates
- 7.4.2 Aliasse
- 7.4.3 Compile-Zeit-if
- 7.5 Ratschläge
- Kapitel 8: Konzepte und generische Programmierung
- 8.1 Einführung
- 8.2 Konzepte
- 8.2.1 Verwendung von Konzepten
- 8.2.2 Konzeptbasiertes Überladen
- 8.2.3 Gültiger Code
- 8.2.4 Definition von Konzepten
- 8.2.5 Konzepte und auto
- 8.2.6 Konzepte und Typen
- 8.3 Generische Programmierung
- 8.3.1 Verwendung von Konzepten
- 8.3.2 Abstraktion mittels Templates
- 8.4 Variadische Templates
- 8.4.1 Fold-Ausdrücke
- 8.4.2 Argumente weitergeben
- 8.5 Modell der Template-Kompilierung
- 8.6 Ratschläge
- Kapitel 9: Überblick über die Bibliothek
- 9.1 Einführung
- 9.2 Komponenten der Standardbibliothek
- 9.3 Organisation der Standardbibliothek
- 9.3.1 Namensräume
- 9.3.2 Der Namensraum ranges
- 9.3.3 Module
- 9.3.4 Header
- 9.4 Ratschläge
- Kapitel 10: Strings und reguläre Ausdrücke
- 10.1 Einführung
- 10.2 Strings
- 10.2.1 Die Implementierung von string
- 10.3 String-Views
- 10.4 Reguläre Ausdrücke
- 10.4.1 Suche
- 10.4.2 Notation regulärer Ausdrücke
- 10.4.3 Iteratoren
- 10.5 Ratschläge
- Kapitel 11: Eingabe und Ausgabe
- 11.1 Einführung
- 11.2 Ausgabe
- 11.3 Eingabe
- 11.4 I/O-Status
- 11.5 Ein-/Ausgabe benutzerdefinierter Typen
- 11.6 Ausgabeformatierung
- 11.6.1 Stream-Formatierung
- 11.6.2 Formatierung im printf()-Stil
- 11.7 Streams
- 11.7.1 Standard-Streams
- 11.7.2 Datei-Streams
- 11.7.3 String-Streams
- 11.7.4 Speicher-Streams
- 11.7.5 Synchronisierte Streams
- 11.8 Ein-/Ausgaben im C-Stil
- 11.9 Dateisystem
- 11.9.1 Pfade
- 11.9.2 Dateien und Verzeichnisse
- 11.10 Ratschläge
- Kapitel 12: Container
- 12.1 Einführung
- 12.2 vector
- 12.2.1 Elemente
- 12.2.2 Bereichsüberprüfung
- 12.3 list
- 12.4 forward_list
- 12.5 map
- 12.6 unordered_map
- 12.7 Allokatoren
- 12.8 Ein Überblick über Container
- 12.9 Ratschläge
- Kapitel 13: Algorithmen
- 13.1 Einführung
- 13.2 Verwendung von Iteratoren
- 13.3 Iterator-Typen
- 13.3.1 Stream-Iteratoren
- 13.4 Verwendung von Prädikaten
- 13.5 Überblick über Algorithmen
- 13.6 Parallele Algorithmen
- 13.7 Ratschläge
- Kapitel 14: Bereiche (Ranges)
- 14.1 Einführung
- 14.2 Views
- 14.3 Generatoren
- 14.4 Pipelines
- 14.5 Überblick über Konzepte
- 14.5.1 Typkonzepte
- 14.5.2 Iterator-Konzepte
- 14.5.3 Bereichskonzepte
- 14.6 Ratschläge
- Kapitel 15: Zeiger und Container
- 15.1 Einführung
- 15.2 Zeiger
- 15.2.1 unique_ptr und shared_ptr
- 15.2.2 span
- 15.3 Container
- 15.3.1 array
- 15.3.2 bitset
- 15.3.3 pair
- 15.3.4 tuple
- 15.4 Alternativen
- 15.4.1 variant
- 15.4.2 optional
- 15.4.3 any
- 15.5 Ratschläge
- Kapitel 16: Utilities
- 16.1 Einführung
- 16.2 Zeit
- 16.2.1 Uhren
- 16.2.2 Kalender
- 16.2.3 Zeitzonen
- 16.3 Funktionsanpassung
- 16.3.1 Lambdas als Adapter
- 16.3.2 mem_fn()
- 16.3.3 function
- 16.4 Typfunktionen
- 16.4.1 Typprädikate
- 16.4.2 Bedingte Eigenschaften
- 16.4.3 Typgeneratoren
- 16.4.4 Assoziierte Typen
- 16.5 source_location
- 16.6 move() und forward()
- 16.7 Bitmanipulation
- 16.8 Ein Programm beenden
- 16.9 Ratschläge
- Kapitel 17: Numerik
- 17.1 Einführung
- 17.2 Mathematische Funktionen
- 17.3 Numerische Algorithmen
- 17.3.1 Parallele numerische Algorithmen
- 17.4 Komplexe Zahlen
- 17.5 Zufallszahlen
- 17.6 Vektorarithmetik
- 17.7 Numerische Grenzen
- 17.8 Typ-Aliasse
- 17.9 Mathematische Konstanten
- 17.10 Ratschläge
- Kapitel 18: Nebenläufigkeit
- 18.1 Einführung
- 18.2 Tasks und thread
- 18.2.1 Argumente übergeben
- 18.2.2 Ergebnisse zurückgeben
- 18.3 Daten gemeinsam nutzen
- 18.3.1 mutexe und Locks
- 18.3.2 atomic
- 18.4 Warten auf Ereignisse
- 18.5 Kommunizierende Tasks
- 18.5.1 future und promise
- 18.5.2 packaged_task
- 18.5.3 async()
- 18.5.4 Einen Thread stoppen
- 18.6 Koroutinen
- 18.6.1 Kooperatives Multitasking
- 18.7 Ratschläge
- Kapitel 19: Geschichte und Kompatibilität
- 19.1 Geschichte
- 19.1.1 Chronik
- 19.1.2 Die frühen Jahre
- 19.1.3 Die ISO-C++-Standards
- 19.1.4 Standards und Stil
- 19.1.5 Verwendung von C++
- 19.1.6 Das C++-Modell
- 19.2 Die Entwicklung der Merkmale von C++
- 19.2.1 Sprachmerkmale von C++11
- 19.2.2 Sprachmerkmale von C++14
- 19.2.3 Sprachmerkmale von C++17
- 19.2.4 Sprachmerkmale von C++20
- 19.2.5 Komponenten der C++11-Standardbibliothek
- 19.2.6 Komponenten der C++14-Standardbibliothek
- 19.2.7 Komponenten der C++17-Standardbibliothek
- 19.2.8 Komponenten der C++20-Standardbibliothek
- 19.2.9 Entfernte und veraltete Funktionsmerkmale
- 19.3 C/C++-Kompatibilität
- 19.3.1 C und C++ sind Geschwister
- 19.3.2 Kompatibilitätsprobleme
- 19.4 Ratschläge
- Anhang A: module std
- A.1 Einführung
- A.2 Benutzen Sie, was Ihre Implementierung zu bieten hat
- A.3 Benutzen Sie Header
- A.4 Machen Sie sich Ihr eigenes module std
- A.5 Ratschläge
- Anhang B: Literaturverzeichnis
- B.1 Literaturhinweise
- Stichwortverzeichnis
System requirements
File format: PDF
Copy protection: Watermark-DRM (Digital Rights Management)
System requirements:
- Computer (Windows; MacOS X; Linux): Use the free software Adobe Reader, Adobe Digital Editions, or any other PDF viewer of your choice (see eBook Help).
- Tablet/Smartphone (Android; iOS): Install the free app Adobe Digital Editions or another reading app for eBooks, e.g., PocketBook (see eBook Help).
- E-reader: Bookeen, Kobo, Pocketbook, Sony, Tolino and many more (only limited: Kindle).
The file format PDF always displays a book page identically on any hardware. This makes PDF suitable for complex layouts such as those used in textbooks and reference books (images, tables, columns, footnotes). Unfortunately, on the small screens of e-readers or smartphones, PDFs are rather annoying, requiring too much scrolling.
This eBook uses Watermark-DRM, a „soft” copy protection. This means that there are no technical restrictions to prevent illegal distribution. However, there is a personalised watermark embedded in the eBook that can be used to identify the purchaser of the eBook in the event of misuse and to provide evidence for legal purposes.
For more information, see our eBook Help page.