Purchase access. Login

C++ - Lernen und professionell anwenden

Peter Prinz and Ulla Kirch

Cite this publication as

Peter Prinz, Ulla Kirch, C++ - Lernen und professionell anwenden (2018), mitp-Verlag, Frechen, ISBN: 9783958458093

Tracked since 05/2018

41
downloads

Description

Prof. Dr. Ulla Kirch unterrichtet an der FH München und Dr. Peter Prinz ist Software-Entwickler. Sie haben bereits zahlreiche Bücher zu C und C++ geschrieben.

Description / Abstract

Gezielter Lernerfolg durch überschaubare KapiteleinheitenVollständige Darstellung – Schritt für SchrittKonsequent 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, FunktionenVektoren, Strings, Matrizen, Referenzen und ZeigerSpeicherreservierung zur Laufzeit, Dynamische Arrays und Move-SemantikKlassen, Vererbung und PolymorphieSequenzieller, wahlfreier und portabler DateizugriffException-HandlingTemplatesSmart PointerMultithreadingContainer und Algorithmen der StandardbibliothekNumerische BibliothekUmfassendes Glossar

Table of content

  • 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<T> einsetzen
  • Smart Pointer vom Typ unique_ptr<T> 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<T>
  • Methoden von complex<T>
  • Komplexe Funktionen
  • Das Klassen-Template valarray<T>
  • 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

More of this series

    Related titles

      More of this author(s)