O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

C++: Eine kompakte Einführung

Book Description

  • spielerische Annäherung an das Thema- durchgängiges Textadventure-Beispiel- basiert auf dem C++11-Standard - bekannter und erfolgreicher C-/C++-Autor

Table of Contents

  1. Cover
  2. Titel
  3. Impressum
  4. 1 Einführung
    1. 1.1 Über das Buch
    2. 1.2 Vorstellung des Projekts
    3. 1.3 Identifizieren der Programmteile
      1. 1.3.1 Objekte
      2. 1.3.2 Kontrollstrukturen
    4. 1.4 Abstraktion
      1. 1.4.1 Datenabstraktion
      2. 1.4.2 Algorithmische Abstraktion
  5. 2 Grundelemente eines C++-Programms
    1. 2.1 Das erste Programm
      1. 2.1.1 Implizites return
    2. 2.2 Die Ausgabe
      1. 2.2.1 cout
    3. 2.3 include
    4. 2.4 Namensbereiche
    5. 2.5 Kommentare
    6. 2.6 Escape-Sequenzen
    7. 2.7 Zusammenfassung
    8. 2.8 Spielprojekt
  6. 3 Arithmetik in C++
    1. 3.1 Variablen
      1. 3.1.1 Integrierte Datentypen
      2. 3.1.2 Vorzeichenlose Typen
    2. 3.2 Definieren einer Variablen
      1. 3.2.1 Initialisierung
      2. 3.2.2 Lebensdauer
      3. 3.2.3 Automatische Typbestimmung
      4. 3.2.4 Definitionen zusammenfassen
    3. 3.3 Eingabe
    4. 3.4 Grundrechenarten
    5. 3.5 Konstanten
      1. 3.5.1 Konstante Ausdrücke
      2. 3.5.2 Unveränderliche Werte
    6. 3.6 Restwert
    7. 3.7 Verknüpfen unterschiedlicher Datentypen
    8. 3.8 Explizite Typumwandlung
    9. 3.9 Kombinierte Zuweisungsoperatoren
    10. 3.10 Inkrement und Dekrement
    11. 3.11 Mathematische Funktionen
    12. 3.12 Bitweise Operatoren
    13. 3.13 Zusammenfassung
    14. 3.14 Spielprojekt
  7. 4 Verzweigungen
    1. 4.1 Zusammengesetzte Anweisungen
    2. 4.2 Bedingungen
    3. 4.3 if
    4. 4.4 else
    5. 4.5 Logische Operatoren
    6. 4.6 Der ?:-Operator
    7. 4.7 Die Fallunterscheidung
    8. 4.8 static_assert
    9. 4.9 assert
    10. 4.10 Zusammenfassung
    11. 4.11 Spielprojekt
  8. 5 Schleifen
    1. 5.1 while
    2. 5.2 do-while
    3. 5.3 for
    4. 5.4 break
    5. 5.5 continue
    6. 5.6 Zusammenfassung
    7. 5.7 Spielprojekt
  9. 6 Funktionen
    1. 6.1 Funktionsdefinition
    2. 6.2 return
    3. 6.3 Standardwerte
    4. 6.4 Suffixrückgabetyp
    5. 6.5 Funktionsdeklaration
    6. 6.6 Module
    7. 6.7 Funktionen überladen
      1. 6.7.1 Unterscheidung in der Parameteranzahl
      2. 6.7.2 inline
      3. 6.7.3 Unterscheidung im Parametertyp
    8. 6.8 Lambda-Funktionen
    9. 6.9 Zusammenfassung
    10. 6.10 Spielprojekt
  10. 7 Klassen
    1. 7.1 Objektorientierte Programmierung
      1. 7.1.1 Objekte als abgrenzbare Einheiten
      2. 7.1.2 Nicht objektorientierte Objekte
    2. 7.2 Klassen als Bauplan
      1. 7.2.1 Definition
    3. 7.3 Zugriffsrechte
    4. 7.4 Konstruktoren
      1. 7.4.1 Standardkonstruktor
      2. 7.4.2 Der Destruktor
    5. 7.5 Methoden
      1. 7.5.1 Zugriffsmethoden
      2. 7.5.2 Konstante Methoden
    6. 7.6 Externe Definition
    7. 7.7 Mehrfachdefinition
    8. 7.8 Typalias
      1. 7.8.1 typedef
      2. 7.8.2 using
      3. 7.8.3 Zugriffsrecht
    9. 7.9 cv-Qualifizierung
    10. 7.10 Zusammenfassung
    11. 7.11 Spielprojekt
  11. 8 Arrays und Verweise
    1. 8.1 Arrays definieren
      1. 8.1.1 sizeof
    2. 8.2 Arbeiten mit Arrays
      1. 8.2.1 Initialisierung
      2. 8.2.2 Arrays durchlaufen
    3. 8.3 Arrays als Funktionsparameter I
    4. 8.4 Zeiger
      1. 8.4.1 Hexadezimalsystem
      2. 8.4.2 Der Adressoperator
      3. 8.4.3 Definition eines Zeigers
      4. 8.4.4 Dereferenzierung
      5. 8.4.5 Zeiger als Funktionsparameter
      6. 8.4.6 Zeiger auf Zeiger
      7. 8.4.7 Arrays als Funktionsparameter II
      8. 8.4.8 Zeigerarithmetik
    5. 8.5 Referenzen
    6. 8.6 Objekte als Funktionsparameter
      1. 8.6.1 Referenzen auf Objekte
      2. 8.6.2 Zeiger auf Objekte
      3. 8.6.3 Objekte als Methodenparameter
    7. 8.7 Zusammenfassung
    8. 8.8 Spielprojekt
  12. 9 Strings
    1. 9.1 char
      1. 9.1.1 cctype
    2. 9.2 C-Strings
      1. 9.2.1 cstring
      2. 9.2.2 Beispiel
    3. 9.3 Strings
      1. 9.3.1 Tastatureingabe von Strings
      2. 9.3.2 Methoden von string
    4. 9.4 Zusammenfassung
    5. 9.5 Spielprojekt
  13. 10 Dynamische Speicherverwaltung
    1. 10.1 Zeiger
      1. 10.1.1 Zeiger und Konstanten
      2. 10.1.2 Zeiger auf Funktionen
      3. 10.1.3 Zeiger auf Klassenelemente
    2. 10.2 Referenzen
    3. 10.3 new und delete
      1. 10.3.1 Die Klasse Name
    4. 10.4 Smart Pointer
      1. 10.4.1 Unique Pointer
      2. 10.4.2 Shared Pointer
      3. 10.4.3 Weak Pointer
      4. 10.4.4 Smart Pointer und Arrays
      5. 10.4.5 Auto-Pointer
    5. 10.5 Zusammenfassung
    6. 10.6 Spielprojekt
  14. 11 Klassen – Vertiefung
    1. 11.1 Reihenfolge der Zugriffsrechte
    2. 11.2 Der this-Zeiger
    3. 11.3 Konstruktoren
      1. 11.3.1 Standardkonstruktor
      2. 11.3.2 Kopierkonstruktor
      3. 11.3.3 Die Klasse Name
      4. 11.3.4 Elementinitialisierungsliste
      5. 11.3.5 Verschiebekonstruktor
      6. 11.3.6 Implizite Typumwandlung
      7. 11.3.7 Konstruktordelegation
    4. 11.4 Destruktoren
    5. 11.5 Konstante Objekte und Elemente
      1. 11.5.1 Implizite Objektparameter
      2. 11.5.2 mutable
    6. 11.6 Funktionen als deleted oder default definieren
    7. 11.7 Zusammenfassung
    8. 11.8 Spielprojekt
  15. 12 Klassen – Abschluss
    1. 12.1 Standardwerte für Attribute
    2. 12.2 Verschachtelte Klassendefinitionen
    3. 12.3 Statische Klassenelemente
      1. 12.3.1 Statische Methoden
      2. 12.3.2 Statische Attribute
      3. 12.3.3 Statische Variablen
    4. 12.4 Konstruktoren und ihre Anwendung
      1. 12.4.1 Funktionsaufruf aus Konstruktoren heraus
      2. 12.4.2 Unvollendet konstruierte Objekte
    5. 12.5 Implizite Klassenelemente
      1. 12.5.1 Impliziter Standardkonstruktor
      2. 12.5.2 Impliziter Kopierkonstruktor
      3. 12.5.3 Impliziter Verschiebekonstruktor
      4. 12.5.4 Impliziter Kopier-Zuweisungsoperator
      5. 12.5.5 Impliziter Verschiebe-Zuweisungsoperator
      6. 12.5.6 Impliziter Destruktor
    6. 12.6 Aufzählungen
    7. 12.7 Zusammenfassung
    8. 12.8 Spielprojekt
  16. 13 Namensbereiche
    1. 13.1 Deklarative Bereiche, potenzielle und tatsächliche Bezugsrahmen
    2. 13.2 Namensbereiche definieren
    3. 13.3 Die Using-Direktive
    4. 13.4 Ein Alias für Namensbereiche
    5. 13.5 Unbenannte Namensbereiche
    6. 13.6 Die Using-Deklaration
    7. 13.7 Zusammenfassung
    8. 13.8 Spielprojekt
  17. 14 Operatoren überladen
    1. 14.1 Zuweisungsoperatoren
      1. 14.1.1 Kopier-Zuweisungsoperator
      2. 14.1.2 Verschiebe-Zuweisungsoperator
      3. 14.1.3 Kombinierte Zuweisungsoperatoren
    2. 14.2 Rechenoperatoren
      1. 14.2.1 Operation als Methode
      2. 14.2.2 Operation als Funktion
      3. 14.2.3 Methode oder Funktion
      4. 14.2.4 Operatoren mit Verschiebe-Semantik
      5. 14.2.5 Standardverhalten nachbilden
    3. 14.3 Vergleichsoperatoren
      1. 14.3.1 Operator-Templates
    4. 14.4 Die Operatoren << und >>
      1. 14.4.1 operator<<
      2. 14.4.2 operator>>
    5. 14.5 Der Operator []
    6. 14.6 Der Operator ()
    7. 14.7 Die Operatoren -> und *
    8. 14.8 Umwandlungsoperatoren
    9. 14.9 Die Operatoren ++ und --
      1. 14.9.1 Präfixoperatoren
      2. 14.9.2 Postfixoperatoren
      3. 14.9.3 Weitere Operatoren
    10. 14.10 Probleme mit Operatoren
    11. 14.11 Zusammenfassung
    12. 14.12 Spielprojekt
  18. 15 Templates
    1. 15.1 Klassen-Templates
    2. 15.2 Funktions-Templates
    3. 15.3 Template-Parameter
      1. 15.3.1 Standardargumente
    4. 15.4 Template-Spezialisierung
    5. 15.5 typename
    6. 15.6 Zusammenfassung
  19. 16 STL
    1. 16.1 Die Komponenten der STL
    2. 16.2 Container
      1. 16.2.1 Laufzeitklassen
      2. 16.2.2 Die Container im Überblick
      3. 16.2.3 STL-konforme Container
    3. 16.3 Iteratoren
      1. 16.3.1 Entwurf eines Iterators
      2. 16.3.2 Ein Iterator für Name
      3. 16.3.3 Iteratorkategorien
      4. 16.3.4 STL-konforme Iteratoren erstellen
      5. 16.3.5 Iteratoren erzeugen
      6. 16.3.6 Insert-Iteratoren
      7. 16.3.7 Stream-Iteratoren
    4. 16.4 Algorithmen
      1. 16.4.1 Die Algorithmen im Überblick
    5. 16.5 Die STL im Einsatz
      1. 16.5.1 Variable Funktionsaufrufe
      2. 16.5.2 Aufrufübergreifende Zustände
      3. 16.5.3 Element suchen
      4. 16.5.4 Element suchen mit eigener Bedingung
      5. 16.5.5 Elemente löschen
      6. 16.5.6 Elemente kopieren
      7. 16.5.7 Elemente sortieren
      8. 16.5.8 Eigene Listeninitialisierungskonstruktoren
    6. 16.6 Zusammenfassung
    7. 16.7 Spielprojekt
  20. 17 Vererbung I
    1. 17.1 Das Klassendiagramm der UML
    2. 17.2 Vererbung in C++
    3. 17.3 Die Vererbungssyntax
    4. 17.4 Geschützte Elemente
      1. 17.4.1 Zugriff auf Basisklassenelemente
    5. 17.5 Polymorphie
    6. 17.6 Verdecken von Methoden
    7. 17.7 Überschreiben von Methoden
    8. 17.8 Virtuelle Methoden
      1. 17.8.1 Virtuelle Methoden und Konstruktoren
      2. 17.8.2 Downcasts
      3. 17.8.3 Virtuelle Destruktoren
    9. 17.9 Rein-virtuelle Methoden
      1. 17.9.1 Rein-virtuelle Methoden mit Implementierung
      2. 17.9.2 Rein-virtuelle Destruktoren
    10. 17.10 Vererbung und Arrays
    11. 17.11 Vererbung und Standardwerte
    12. 17.12 Vererbung und überladene Operatoren
    13. 17.13 Versiegelte Elemente
      1. 17.13.1 Versiegelte Klasse
      2. 17.13.2 Versiegelte Methode
      3. 17.13.3 Warum Elemente versiegeln?
    14. 17.14 Geerbte Konstruktoren verwenden
    15. 17.15 Überschreibungshilfe
    16. 17.16 Zusammenfassung
    17. 17.17 Spielprojekt
  21. 18 Vererbung II
    1. 18.1 Beziehungen
      1. 18.1.1 ist ein
      2. 18.1.2 ist implementiert mit
      3. 18.1.3 hat ein
    2. 18.2 Was wird vererbt?
      1. 18.2.1 Schnittstelle mit verbindlicher Implementierung
      2. 18.2.2 Schnittstelle mit überschreibbarer Implementierung
      3. 18.2.3 Schnittstelle
      4. 18.2.4 Implementierung
    3. 18.3 Das Offen-geschlossen-Prinzip
    4. 18.4 Operationen oben, Daten unten
    5. 18.5 Das Umkehrung-der-Abhängigkeit-Prinzip
    6. 18.6 Das Einzelne-Verantwortung-Prinzip
    7. 18.7 Zusammenfassung
    8. 18.8 Spielprojekt
  22. 19 Mehrfachvererbung
    1. 19.1 Gemeinsame Basisklassen
    2. 19.2 Virtuelle Basisklassen
    3. 19.3 Konstruktoren virtueller Basisklassen
    4. 19.4 Einsatz von Mehrfachvererbung
    5. 19.5 Zusammenfassung
    6. 19.6 Spielprojekt
  23. 20 Ausnahmen
    1. 20.1 Warum Ausnahmen?
    2. 20.2 Einsatz von Ausnahmen
    3. 20.3 Vordefinierte Ausnahmen
      1. 20.3.1 Header-Datei »exception«
      2. 20.3.2 Header-Datei »typeinfo«
      3. 20.3.3 Header-Datei »memory«
      4. 20.3.4 Header-Datei »new«
      5. 20.3.5 Header-Datei »stdexcept«
    4. 20.4 Ausnahmen im Detail
      1. 20.4.1 terminate
      2. 20.4.2 Das Verlassen eines Try-Blocks
      3. 20.4.3 uncaught_exception
      4. 20.4.4 Das Werfen einer Ausnahme
      5. 20.4.5 Das Fangen einer Ausnahme
    5. 20.5 Ausnahmespezifikationen
      1. 20.5.1 Ausnahmespezifikationen in der Praxis
    6. 20.6 Ausnahmen und Konstruktoren
    7. 20.7 Ausnahmen und Destruktoren
    8. 20.8 Ausnahmen und dynamische Speicherverwaltung
    9. 20.9 Ressourcenerwerb ist Initialisierung
    10. 20.10 Funktions-Try-Blöcke
    11. 20.11 Ausnahmensicherheit
    12. 20.12 Zusammenfassung
  24. 21 Das Spiel
    1. 21.1 Aktionen
    2. 21.2 Spielregeln
    3. 21.3 Räume
    4. 21.4 Die Erzeugung der Spielwelt
      1. 21.4.1 Erstellen der Räume
      2. 21.4.2 Erzeugen der Gegenstände
      3. 21.4.3 Erstellen der Ausgänge
      4. 21.4.4 Erzeugen von Türen
      5. 21.4.5 Erstellen der Interaktionen
  25. Literatur
  26. Index
  27. Cover-R&#252;ckseite