Cover image for C++ kurz & gut

Book description

C++ ist eine komplexe Sprache mit vielen subtilen Facetten. Insbesondere Programmierer, die von einer anderen Programmiersprache umsteigen oder nur gelegentlich in C++ programmieren, haben ihre Schwierigkeiten mit ähnlichen und doch nicht identischen Features in Java oder C. Aber auch erfahrene C++-Programmierer müssen manchmal überlegen, wie ein bestimmtes Konstrukt oder Konzept in C++ implementiert ist. Ihnen allen bietet C++ - kurz & gut einen kompakten Überblick über die Strukturen und Syntaxelemente der Sprache, erläutert anhand von kurzen Beispielen. Die Kurzreferenz ist ideal zum schnellen Nachschlagen, sie bringt die C++-Sprachfeatures auf den Punkt. Das Nachschlagebändchen wurde für die 2. Auflage aktualisiert und deutlich erweitert, sie deckt jetzt den Standard C++11 ab.

Table of Contents

  1. Einführung
    1. Typografische Konventionen
    2. Danksagungen
    3. C++ versus C++11
  2. 1. Programmstruktur
    1. Programmstart
    2. Programmende
    3. Header-Dateien
    4. Quelldateien
    5. Präprozessor-Anweisungen
      1. #define
      2. #undef
      3. #ifdef, #ifndef, #else, #endif
      4. #if, #elif, #else, #endif
      5. #include
      6. #error
      7. #line
      8. #pragma
    6. Präprozessor-Makros
  3. 2. Lexikalische Elemente
    1. Kommentare
    2. Bezeichner
    3. Reservierte Schlüsselwörter
    4. Literale
      1. Benutzerdefinierte Literale
    5. Operatoren
      1. Assoziativität
      2. Vorrang (Präzedenz)
      3. Bereichsauflösung (::)
      4. Indexzugriff ([ ])
      5. Klassenmitglieder-Auswahl (. und ->)
      6. Funktionsaufruf (( ))
      7. Wertekonstruktion (())
      8. Postinkrement und Postdekrement (++, −−)
      9. typeid
      10. C++-Casts
      11. sizeof
      12. alignof
      13. Präinkrement und Prädekrement (++, −−)
      14. Bitweises NICHT (~)
      15. Logisches NICHT (!)
      16. Unäres Minus und Plus (-, +)
      17. Adressoperator (&)
      18. Dereferenzierung (*)
      19. Allozieren und deallozieren
      20. C-Casts (())
      21. Zeiger-auf-Klassenmitglied-Auswahl (.* und ->*)
      22. Arithmetische Operatoren (*, /, %, +, -)
      23. Verschieben nach links oder rechts (<<, >>)
      24. Relationale Operatoren (<, <=, >, >, >=, ==, !=)
      25. Bitweises UND, XODER und ODER (&, ^, |)
      26. Logisches UND und ODER (&&, ||)
      27. Bedingter Ausdruck (?:)
      28. {}-Initialisierungsliste
      29. Einfache und zusammengesetzte Zuweisungen (=, *=, /=, %=, +=, -=, <<=, >>=, &=, |=, ^=)
      30. Ausnahme (throw)
      31. Komma (,)
    6. Ausdrücke
  4. 3. Typen
    1. Fundamentale Typen
      1. bool
        1. Boolesche Werte
        2. Boolesche Literale
      2. char, wchar_t, char16_t und char32_t
        1. Zeichenwerte
        2. Zeichenliterale
      3. short, int, long, long long
        1. Integer-Werte
        2. Integer-Literale
      4. float, double, long double
        1. Fließkommawerte
        2. Fließkommaliterale
        3. void
    2. Zusammengesetzte Typen
      1. Aufzählungen
        1. Ohne Gültigkeitsbereich
        2. Mit Gültigkeitsbereich
      2. C-Arrays
        1. Mehrdimensionale C-Arrays
        2. C-Arrays an Funktionen übergeben
        3. Initialisierungslisten für C-Arrays
      3. C-Strings
        1. C-String-Literale
      4. Zeiger
        1. Dereferenzieren von Zeigern
        2. Zeigerarithmetik
        3. void-Zeiger
        4. Null-Zeiger
        5. Funktionszeiger
      5. Zeiger auf Klassenmitglieder
      6. Referenzen
        1. Referenzparameter
          1. Lvalue-Referenzen
          2. Rvalue-Referenzen
      7. Klassentypen
    3. Deklarationen
      1. Variablen deklarieren
        1. Zeigervariablen
      2. Initialisierung
      3. Funktionen deklarieren
      4. Speicherklassen
        1. static
        2. extern
        3. mutable
        4. register
      5. Qualifier
        1. const
        2. constexpr
        3. volatile
    4. Automatische Typableitung
    5. Implizite Typkonvertierungen und explizite Casts
      1. Implizite Typkonvertierungen
        1. Werte-Erhaltungen
        2. Benutzerdefinierte Konvertierungen
      2. Explizite Casts
        1. dynamic_cast
        2. static_cast
        3. const_cast
        4. reinterpret_cast
    6. Typdefinitionen
      1. typedef
      2. using
    7. Typinformationen
      1. typeid
      2. type_info
    8. Speicherverwaltung
      1. Speicherallokation
        1. new
        2. new[]
        3. Placement-new
        4. Fehlgeschlagene Allokationen
      2. Freigabe von Speicher
        1. delete
        2. delete[]
  5. 4. Anweisungen
    1. Ausdrucksanweisungen
    2. Null-Anweisungen
    3. Zusammengesetzte Anweisungen
    4. Iterationsanweisungen (Schleifen)
      1. while
      2. do
      3. for
      4. Range-basierte for-Anweisung
    5. Verzweigungen
      1. if
      2. switch
    6. Sprunganweisungen
      1. break
      2. continue
      3. goto
      4. return
  6. 5. Ausnahmebehandlung
    1. try
    2. throw
    3. catch
    4. noexcept
      1. Der noexcept-Operator
  7. 6. Sichtbarkeit
    1. Geltungsbereiche
      1. Lokaler Geltungsbereich
      2. Klassen-Geltungsbereich
      3. Namensraum-Geltungsbereich
      4. Datei-Geltungsbereich
      5. Eingebettete Geltungsbereiche
      6. Template-Parameter-Geltungsbereich
      7. Andere Geltungsbereiche
    2. Namensräume
      1. using-Deklarationen
      2. using-Anweisungen
      3. Namensraum-Alias
      4. Unbenannte Namensräume
  8. 7. Funktionen
    1. Funktionen deklarieren
    2. Alternative Funktionssyntax
    3. Funktionsdefinition
    4. Default-Argumente
    5. Funktionen überladen
    6. Inline-Funktionen
    7. Lambda-Funktionen
      1. Closure
      2. First-Class-Objects
  9. 8. Klassentypen
    1. Objekte
      1. Objekte deklarieren
      2. Zugriff auf Klassenmitglieder
    2. Attribute
      1. static
      2. const
      3. mutable
      4. volatile
    3. Methoden
      1. Besonderheiten
        1. Der this-Zeiger
        2. static
        3. const
        4. constexpr
        5. volatile
      2. Konstruktoren
        1. Konstruktortypen
          1. Default
          2. Copy
          3. Move
        2. Explizite Konstruktoren
        3. Delegation von Konstruktoren
        4. Initialisierer für Instanzvariablen
      3. Destruktoren
      4. Operatoren überladen
        1. Zuweisungsoperatoren
        2. Klammeroperator
        3. Speicherverwaltungsoperator
      5. Methoden anfordern und unterdrücken
        1. default
        2. delete
    4. Zugriffsrechte für Klassenmitglieder
    5. Deklarationen
      1. Eingebettete Deklarationen
      2. Vorwärtsdeklarationen
    6. Freunde
    7. Strukturen
    8. Unions
  10. 9. Vererbung
    1. Basisklassen
      1. Abstrakte Basisklassen
      2. Zugriffsrechte
      3. Vererbung verbieten
    2. Methoden
      1. Konstruktoren
        1. Aufrufreihenfolge
        2. Vererbung
        3. Basisklassen-Initialisierer
      2. Destruktoren
        1. Aufrufreihenfolge
        2. Virtuelle Destruktoren
      3. Virtuelle Methoden
        1. Kontrolle mit override und final
          1. override
          2. final
    3. Mehrfachvererbung
      1. Virtuelle Basisklassen
  11. 10. Templates
    1. Funktions-Templates
      1. Instanziierung
      2. Überladen
    2. Klassen-Templates
      1. Instanziierung
      2. Methoden-Templates
      3. Vererbung
      4. Freunde
        1. Allgemeine Freundschaft
        2. Spezielle Freundschaft
        3. Freundschaft zu Typen
      5. Alias-Templates
    3. Template-Parameter
      1. Typ-Parameter
      2. Nichttyp-Parameter
      3. Template-Templates-Parameter
      4. Variadic Templates
        1. Perfect Forwarding
    4. Template-Argumente
      1. Template-Argument-Ableitung
        1. Konvertierung
        2. Explizite Template-Argumente
        3. Automatische Ermittlung des Rückgabetyps
      2. Default-Template-Argumente
        1. Funktions-Templates
        2. Klassen-Templates
    5. Spezialisierung
      1. Primäre Templates
      2. Partielle Spezialisierung
      3. Vollständige Spezialisierung
  12. 11. Die C++-Standardbibliothek
    1. Der Namensraum std
    2. Header-Dateien
      1. C-Header-Dateien
      2. C++-Header-Dateien
    3. I/O-Streams
      1. cin
      2. cout
      3. cerr
      4. clog
    4. Wichtige Datentypen
      1. string
      2. vector
      3. map
  13. Stichwortverzeichnis
  14. Copyright