- Gezielter Lernerfolg durch überschaubare Kapiteleinheiten
- Vollständige Darstellung Schritt für Schritt
- Konsequent objektorientiert programmieren
Sie möchten die Programmiersprache C++ erlernen oder vertiefen und sind Anfänger oder aber fortgeschrittener Programmierer? Dann ist dieses Buch richtig für Sie!
Sie lernen die elementaren Sprachkonzepte von C++ und werden schrittweise bis zur Entwicklung professioneller C++-Programme geführt. In den Beispielen zeigen die Autoren die ganze Breite des Anwendungsspektrums auf. Dabei basiert die Sprachbeschreibung auf dem ISO-Standard, der von allen gängigen Compilern unterstützt wird (Visual C++, GNU C++ etc.). Die Erweiterungen des neuen Standards von 2017 (kurz C++17), wie beispielsweise die Filesystem-Bibliothek, sind in aktuellen Compilern noch nicht voll integriert und werden deshalb in diesem Buch mit C++17 gekennzeichnet.
Für den professionellen Einsatz sind in den hinteren Kapiteln Themen wie Smart Pointer, Multithreading, Container und Algorithmen der Standard-Template-Library sowie die Numerische Bibliothek beschrieben. Zahlreiche Anwendungsbeispiele illustrieren die unterschiedlichen Verwendungsmöglichkeiten.
Jedes Kapitel bietet Ihnen die Gelegenheit, mit Übungen und Musterlösungen Ihre Kenntnisse direkt zu überprüfen und zu vertiefen. Die Programmbeispiele aus dem Buch finden Sie zum Download auf der Webseite des Verlags.
Aus dem Inhalt:
- Datentypen, Kontrollstrukturen, Operatoren, Makros, Funktionen
- Vektoren, Strings, Matrizen, Referenzen und Zeiger
- Speicherreservierung zur Laufzeit, Dynamische Arrays und Move-Semantik
- Klassen, Vererbung und Polymorphie
- Sequenzieller, wahlfreier und portabler Dateizugriff
- Exception-Handling
- Templates
- Smart Pointer
- Multithreading
- Container und Algorithmen der Standardbibliothek
- Numerische Bibliothek
- Umfassendes Glossar
Author(s): Ulla Kirch, Peter Prinz
Series: mitp Professional
Edition: 8
Publisher: MITP Verlags GmbH
Year: 2018
Language: German
Pages: 1040
Tags: C++; C++17;
Cover
Titel
Impressum
Inhaltsverzeichnis
Einleitung
Kapitel 1: Grundlagen
Entwicklung und Eigenschaften von C++
Objektorientierte Programmierung
Erstellen eines C++-Programms
Ein erstes C++-Programm
Struktur einfacher C++-Programme
Übungen
Lösungen
Kapitel 2: Elementare Datentypen, Konstanten und Variablen
Elementare Datentypen
Konstanten
Escape-Sequenzen
Namen
Variablen
Die Schlüsselworte const und volatile
Übungen
Lösungen
Kapitel 3: Verwenden von Funktionen und Klassen
Deklaration von Funktionen
Aufruf von Funktionen
Der Typ void für Funktionen
Header-Dateien
Standard-Header-Dateien
Verwenden von Standardklassen
Übungen
Lösungen
Kapitel 4: Ein- und Ausgaben mit Streams
Streams
Formatierung und Manipulatoren
Formatierte Ausgabe von Ganzzahlen
Formatierte Ausgabe von Gleitpunktzahlen
Ausgabe in Felder
Ausgabe von Zeichen, Strings und booleschen Werten
Formatierte Eingabe
Formatierte Eingabe von Zahlen
Unformatierte Ein-/Ausgabe
Übungen
Lösungen
Kapitel 5: Operatoren für elementare Datentypen
Binäre arithmetische Operatoren
Unäre arithmetische Operatoren
Zuweisungen
Vergleichsoperatoren
Logische Operatoren
Übungen
Lösungen
Kapitel 6: Kontrollstrukturen
Die while-Schleife
Die for-Schleife
Die do-while-Schleife
Verzweigungen mit if-else
else-if-Ketten
Bedingte Bewertung
Auswahl mit switch
Sprünge mit break, continue und goto
Übungen
Lösungen
Kapitel 7: Symbolische Konstanten und Makros
Makros
Makros mit Parametern
Arbeiten mit der #define-Direktive
Bedingte Kompilierung
Standardmakros zur Behandlung von Zeichen
Umlenken von Standardeingabe und -ausgabe
Übungen
Lösungen
Kapitel 8: Umwandlung arithmetischer Datentypen
Implizite Typumwandlungen
Verfahren bei arithmetischen Typumwandlungen
Implizite Typumwandlungen bei Zuweisungen
Weitere Typumwandlungen
Übungen
Lösungen
Kapitel 9: Die Standardklasse string
Definition und Zuweisung von Strings
Verketten von Strings
Strings vergleichen
Einfügen und Löschen in Strings
Suchen und Ersetzen in Strings
Zugriff auf Zeichen in Strings
Übungen
Lösungen
Kapitel 10: Funktionen
Bedeutung von Funktionen in C++
Erstellen eigener Funktionen
Return-Wert von Funktionen
Übergabe von Argumenten
inline-Funktionen
Default-Argumente
Überladen von Funktionen
Rekursive Funktionen
Platzhalter auto für Return-Typen
Übungen
Lösungen
Kapitel 11: Speicherklassen und Namensbereiche
Speicherklasse von Objekten
Der Speicherklassen-Spezifizierer extern
Der Speicherklassen-Spezifizierer static
Speicherklassen-Spezifizierer von Funktionen
Namensbereiche
Das Schlüsselwort using
Übungen
Lösungen
Kapitel 12: Referenzen und Zeiger
Definition von Referenzen
Referenzen als Parameter
Referenzen als Return-Wert
Ausdrücke mit Referenztyp
Definition von Zeigern
Der Verweisoperator
Zeiger als Parameter
Übungen
Lösungen
Kapitel 13: Definition von Klassen
Klassen-Konzept
Definition von Klassen
Definition von Methoden
Definition von Objekten
Verwendung von Objekten
Zeiger auf Objekte
Structs
Structured Bindings
Unions
Übungen
Lösung
Kapitel 14: Methoden
Konstruktoren
Aufruf von Konstruktoren
Mehr Initialisierungsmöglichkeiten
Destruktoren
Inline-Methoden
Zugriffsmethoden
const-Objekte und -Methoden
Standardmethoden
Standardmethoden kontrollieren
Der this-Zeiger
Übergabe von Objekten
Objekte als Return-Wert
Übungen
Lösungen
Kapitel 15: Teilobjekte und statische Elemente
Klassen mit Teilobjekten
Elementinitialisierer
Konstante Teilobjekte
Statische Datenelemente
Zugriff auf statische Datenelemente
Aufzählungen
Übungen
Lösungen
Kapitel 16: Vektoren
Vektoren definieren
Initialisierung von Vektoren
C-Strings
Die Standardklasse string_view
Klassen-Arrays
Mehrdimensionale Vektoren
Vektoren als Datenelemente
Übungen
Lösungen
Kapitel 17: Zeiger und Vektoren
Vektoren und Zeiger (1)
Vektoren und Zeiger (2)
Zeigerarithmetik
Vektoren als Argumente von Funktionen
Zeigerversion von Funktionen
Read-only-Zeiger
Zeiger als Return-Wert
Zeigervektoren
Argumente aus der Kommandozeile
Übungen
Lösungen
Kapitel 18: Grundlagen der Dateiverarbeitung
Dateien
File-Stream-Klassen
File-Streams anlegen
Eröffnungsmodus
Schließen von Dateien
Blockweises Schreiben und Lesen
Persistenz von Objekten
Übungen
Lösungen
Kapitel 19: Operatoren überladen
Allgemeines
Operatorfunktionen (1)
Operatorfunktionen (2)
Überladene Operatoren verwenden
Globale Operatorfunktionen
friend-Funktionen
friend-Klassen
Index-Operator überladen
Shift-Operatoren für die Ein-/Ausgabe überladen
Übungen
Lösungen
Kapitel 20: Typumwandlungen für Klassen
Konvertierungskonstruktoren
Konvertierungsfunktionen
Mehrdeutigkeit bei Typumwandlungen
Übungen
Lösungen
Kapitel 21: Speicherreservierung zur Laufzeit
Der Operator new
Der Operator delete
Dynamischer Speicher für Klassen
Dynamischer Speicher für Vektoren
Anwendung: Einfach verkettete Listen
Darstellung einer einfach verketteten Liste
Übungen
Lösungen
Kapitel 22: Dynamische Elemente
Datenfelder variabler Länge
Eine Klasse mit dynamischem Element
Auf- und Abbau eines Objekts
Die Implementierung der Methoden
Kopierkonstruktor
Zuweisung
Verschieben von R-Werten
Move-Konstruktor
Move-Zuweisung
Übungen
Lösungen
Kapitel 23: Vererbung
Konzept der Vererbung
Abgeleitete Klassen
Elemente abgeleiteter Klassen
Elementzugriff
Redefinition von Elementen
Auf- und Abbau abgeleiteter Klassen
Objekte abgeleiteter Klassen
protected-Deklarationen
Weitere Zugriffseinschränkungen
Übungen
Lösungen
Kapitel 24: Typumwandlung in Klassenhierarchien
Konvertierung in Basisklassen
Typumwandlung bei Zuweisungen
Konvertierung von Referenzen und Zeigern
Explizite Typumwandlungen
Übungen
Lösungen
Kapitel 25: Polymorphe Klassen
Polymorphie
Virtuelle Methoden
Abbau dynamischer Objekte
Virtuelle Methodentabelle
Dynamische Casts
Übungen
Lösungen
Kapitel 26: Abstrakte Klassen
Rein virtuelle Methoden
Abstrakte und konkrete Klassen
Zeiger und Referenzen auf abstrakte Klassen
Virtuelle Zuweisungen
Anwendung: Inhomogene Listen
Implementierung einer inhomogenen Liste
Übungen
Lösungen
Kapitel 27: Mehrfachvererbung
Mehrfach abgeleitete Klassen
Mehrfache indirekte Basisklassen
Virtuelle Basisklassen
Aufrufe von Konstruktoren
Initialisierung virtueller Basisklassen
Übungen
Lösungen
Kapitel 28: Ausnahmebehandlung
Traditionelle Fehlerbehandlung
Exception-Handling
Exception-Handler
Auslösen und Auffangen von Exceptions
Schachteln von Ausnahmebehandlungen
Definition eigener Fehlerklassen
Standardfehlerklassen
Übungen
Lösungen
Kapitel 29: Mehr über Dateien
Dateien für wahlfreien Zugriff öffnen
Wahlfreies Positionieren
Dateistatus
Exception-Handling für Dateien
Persistenz von polymorphen Objekten
Anwendung: Indexdateien
Implementierung eines Index-Dateisystems
Portabler Zugriff auf das Dateisystem
Übungen
Lösungen
Kapitel 30: Mehr über Zeiger
Zeiger auf Zeiger
Variable Anzahl von Argumenten
Zeiger auf Funktionen
Komplexe Deklarationen
Definition von Typnamen
Matrizen als Argumente von Funktionen
Anwendung: Dynamische Matrizen
Übungen
Lösungen
Kapitel 31: Bitmanipulationen
Logische Bitoperatoren
Shift-Operatoren
Bitmasken
Verwenden von Bitmasken
Bitfelder
Übungen
Lösungen
Kapitel 32: Templates
Funktions- und Klassen-Templates
Definition von Templates
Instantiierung von Templates
Template-Parameter
Template-Argumente
Spezialisierungen
Default-Argumente von Templates
Explizite Instantiierung
Variable Anzahl von Parametern
Operationen mit Parameterpacks
Standard-Template für Tupel
Typsichere Varianten
Die Standard-Klassen optional und any
Standard-Templates für Bitsets
Übungen
Lösungen
Kapitel 33: Container
Arten von Containern
Sequenzielle Container-Klassen
Iteratoren
Vereinbarung sequenzieller Container
Einfügen in sequenziellen Containern
Elementzugriff
Größe von Containern
Löschen in sequenziellen Containern
Listenoperationen
Assoziative Container
Sets und Multisets
Maps und Multimaps
Initialisierungslisten und Range-for-Schleifen
Hash-Tabellen
Ungeordnete assoziative Container
Hash-Tabellen für selbstdefinierte Typen
Übungen
Lösungen
Kapitel 34: Smart Pointer
Grundlagen
Die Smart Pointer der Standardbibliothek
Smart Pointer vom Typ unique_ptr einsetzen
Smart Pointer vom Typ unique_ptr einsetzen (2)
Das Klassen-Template shared_ptr
Das Klassen-Template shared_ptr (2)
Das Klassen-Template shared_ptr (3)
Das Klassen-Template weak_ptr
Übungen
Lösungen
Kapitel 35: Multithreading
Threads
Erzeugen und Ausführen von Threads
Initialisierung und Zuweisung
Konkurrierende Speicherzugriffe
Thread-ID
Locks
Bedingungsvariablen
Übungen
Lösungen
Kapitel 36: Algorithmen der Standardbibliothek
Algorithmen: Grundlagen
Funktionsobjekte
Lambda-Funktionen
Algorithmen und Iteratoren
Vordefinierte Iteratoren
Nicht-modifizierende Algorithmen
Modifizierende Algorithmen
Mutierende Algorithmen
Sortieren und verwandte Operationen
Kapitel 37: Numerische Bibliothek
Komplexe Zahlen
Das Klassen-Template complex
Methoden von complex
Komplexe Funktionen
Das Klassen-Template valarray
Zuweisung numerischer Vektoren
Arithmetische Operationen
Weitere Operationen
Selektive Indizierung
Verallgemeinerte selektive Indizierung
Indirekte und maskierte Indizierung
Anhang A
Binäre Zahlendarstellung
Präprozessor-Direktiven
Vordefinierte Standardmakros
Einbinden von C-Funktionen
Operatorenübersicht
Vorrangtabelle für Operatoren
ASCII-Code-Tabelle
Bildschirmsteuerzeichen
Compiler, Beispiele und Lösungen
Anhang B
Glossar
Stichwortverzeichnis