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++11 für Programmierer

Book Description

Dieser Leitfaden richtet sich an C++-Programmierer, die sich mit dem C++11-Standard vertraut machen möchten. Er zeigt, welche Neuerungen und Erweiterungen der Standard mit sich bringt, wie die neuen Features effizient eingesetzt werden -- und warum C++11 das bessere C++ ist. Das Buch bietet zunächst einen Überblick über die C++11-Features und zeigt dann im Detail, wie Sie die Neuerungen in Ihren Programmen einsetzen können. Behandelt werden die Kernsprache, die Multithreading-Funktionalität sowie die Verbesserungen der Standardbibliothek. Der Autor verfolgt dabei einen praxisnahen Ansatz: Zahlreiche lauffähige Beispielprogramme, die Sie herunterladen können, sollen Sie zum Ausführen und auch zum Modifizieren des Codes ermutigen. Übungsaufgaben helfen Ihnen darüber hinaus, die Theorie optimal mit der Praxis zu verbinden, damit Sie C++11 in Zukunft erfolgreich anwenden können.

Table of Contents

  1. Einführung
    1. Ziel dieses Buchs
      1. Zielgruppe
    2. Aufbau dieses Buchs
    3. Didaktik
      1. Übungsaufgaben
      2. Exkurse
      3. Anhang
    4. Codebeispiele in diesem Buch
      1. Codekonventionen
      2. Download der Codebeispiele
    5. Aktuelle Compiler-Unterstützung
      1. GCC
      2. Microsoft Visual C++
    6. Standard
    7. Danksagung zur 1. Auflage
    8. Danksagung zur 2. Auflage
    9. Errata
    10. Kontakt
  2. I. Tour de C++11
    1. 1. Die Standardisierung
    2. 2. Ziele von C++11
    3. 3. Kernsprache
      1. Usability
        1. Die Range-basierte For-Schleife
        2. Das automatische Ableiten von Typen
        3. Lambda-Funktionen
        4. Vereinheitlichte Initialisierung
      2. Entwurf von Klassen
        1. Mächtigere Initialisierung
        2. Explizite Klassendefinitionen
      3. Rvalue-Referenzen
      4. Generische Programmierung
        1. Variadic Templates
        2. Zusicherungen zur Compile-Zeit
        3. Aliase Templates
      5. Erweiterte Datenkonzepte und Literale
        1. Konstante Ausdrücke
        2. Plain Old Data (POD)
        3. Unbeschränkte Unions
        4. Streng typisierte Aufzählungstypen
        5. Neue String-Literale
        6. nullptr
      6. Weitere Aufräumarbeiten und Integration von C99
        1. Aufräumarbeiten
        2. Integration von C99
    4. 4. Multithreading
      1. Threads
        1. Erzeugung von Threads
        2. Schutz der Daten
        3. Sichere Initialisierung der Daten
      2. Thread-lokale Daten
      3. Synchronisation von Threads
      4. Asynchrone Aufgaben
    5. 5. Die Standardbibliothek
      1. Neue Bibliotheken
        1. Reguläre Ausdrücke
        2. Type-Traits
          1. Wie funktioniert Template-Metaprogrammierung?
        3. Zufallszahlen
        4. Zeitbibliothek
        5. Referenz-Wrapper
      2. Verbesserte Bibliotheken
        1. Smart Pointer
        2. Neue Container
          1. Tupel
          2. Array
          3. Einfach verkettete Liste
          4. Hashtabellen
        3. Neue Algorithmen
        4. bind und function
  3. II. Kernsprache
    1. 6. Usability
      1. Die Range-basierte For-Schleife
      2. Automatische Typableitung
        1. auto
        2. decltype
        3. Alternative Funktionssyntax
      3. Lambda-Funktionen
        1. Lambda-Funktionen als temporäre Funktionsobjekte
        2. Bindung an den lokalen Bereich: [ ]
        3. Argumente: ( )
        4. Rückgabewert: →
        5. Funktionskörper: { }
      4. Vereinheitlichte Initialisierung
    2. 7. Entwurf von Klassen
      1. Initialisierung von Objekten
        1. Initialisiererlisten für Konstruktoren
        2. Delegation von Konstruktoren
        3. Vererbung von Konstruktoren
        4. Direktes Initialisieren von Klassenelementen
      2. Explizite Klassendefinitionen
        1. default und delete
        2. override und final
        3. Expliziter Konvertierungsoperator
    3. 8. Rvalue-Referenzen
      1. Lvalue- versus Rvalue-Referenzen
      2. Move-Semantik
      3. Perfect Forwarding
    4. 9. Generische Programmierung
      1. Variadic Templates
      2. Zusicherungen zur Compile-Zeit
      3. Aliase Templates
    5. 10. Erweiterte Datenkonzepte und Literale
      1. Konstante Ausdrücke
      2. Plain Old Data (POD)
      3. Unbeschränkte Unions
      4. Streng typisierte Aufzählungstypen
      5. Raw-String-Literale
      6. Unicode-Unterstützung
      7. Benutzerdefinierte Literale
      8. nullptr
    6. 11. Removed und Deprecated
      1. Removed
      2. Deprecated
  4. III. Multithreading
    1. 12. Das C++11-Speichermodell
    2. 13. Atomare Datentypen
    3. 14. Threads
      1. Erzeugen von Threads
      2. Lebenszeit der Daten
      3. Operationen auf Threads
    4. 15. Gemeinsam von Threads genutzte Daten
      1. Schutz der Daten
        1. Mutexe
        2. Locks
      2. Sichere Initialisierung der Daten
        1. Konstante Ausdrücke
        2. call_once und once_flag
        3. Statische Variablen in einem Blockbereich
    5. 16. Thread-lokale Daten
    6. 17. Synchronisation der Threads
    7. 18. Asynchrone Aufgaben
      1. async
      2. packaged_task
      3. future und promise
  5. IV. Die Standardbibliothek
    1. 19. Neue Bibliotheken
      1. Reguläre Ausdrücke
        1. Syntax der regulären Ausdrücke
          1. Zeichen
          2. Metazeichen
          3. Zeichenauswahl
          4. Zeichenklassen
          5. Wiederholungen
          6. Alternative
          7. Gruppierungen
        2. Objekte vom Typ regulärer Ausdruck
        3. Analyse des Suchergebnisses mit match_results
        4. Exakte Treffer mit regex_match
        5. Suchen mit regex_search
        6. Ersetzen mit regex_replace
        7. Formatieren mit regex_replace und match_results.format
        8. Wiederholtes Suchen mit regex_iterator und regex_token_iterator
          1. regex_iterator
          2. regex_token_iterator
      2. Type-Traits
        1. Typeigenschaften abfragen
          1. Primäre Typkategorien
          2. Zusammengesetzte Typkategorien
          3. Typeigenschaften
        2. Typen vergleichen
        3. Typen transformieren
      3. Zufallszahlen
        1. Zufallszahlenerzeuger
          1. random_device
        2. Zufallszahlenverteilung
      4. Zeitbibliothek
        1. Zeitdauer
        2. Zeitgeber
        3. Zeitpunkt
      5. Referenz-Wrapper
        1. Die Hilfsfunktionen ref und cref
    2. 20. Verbesserte Bibliotheken
      1. Smart Pointer
        1. unique_ptr
        2. shared_ptr
          1. Löschfunktion
          2. shared_ptr von this
          3. Konvertierung in Ableitungshierarchien
        3. weak_ptr
          1. Zyklische Referenzen
      2. Neue Container
        1. Tupel
          1. Hilfsfunktionen
        2. Array
        3. Einfach verkettete Liste
        4. Hashtabellen
          1. Hashfunktion
      3. Neue Algorithmen
        1. Praktische Helferlein
      4. bind und function
        1. bind
        2. function
  6. V. Ausblick
    1. 21. Die nächsten C++-Standards
      1. C++14
        1. Kernsprache
          1. Lambda-Funktionen
          2. Automatischer Rückgabetyp einer Funktion
          3. Konstante Ausdrücke
          4. Variablen-Templates
          5. Binäre Literale
        2. Standardbibliothek
          1. Optionale Werte
          2. Benutzerdefinierte Literale
          3. dynarray
          4. tuple
      2. C++17
        1. Für C++11 geplant
          1. Module
          2. Spezielle mathematische Funktionen
          3. Concepts
        2. Technical Report 2
          1. Erweiterte Thread-Funktionalität
          2. Netzwerkunterstützung
          3. Signale und Slots
          4. Dateisystem-Bibliothek
          5. Boost.Any-Bibliothek
          6. Bibliothek zur lexikalischen Konvertierung
          7. Neue String-Algorithmen
  7. VI. Anhang
    1. A. Build-Umgebung installieren
      1. Aktueller C++-Compiler
        1. GNU Compiler Collection (GCC)
          1. GCC bauen
        2. Visual C++ 2010 Express
      2. Boost-Bibliothek
    2. B. Funktionsobjekte
      1. Wie funktioniert ein Funktionsobjekt?
      2. Welche Vorteile bietet ein Funktionsobjekt?
    3. C. Resource Acquisition Is Initialization
    4. D. Implizit erzeugte Methoden und Operatoren
    5. E. Promotion Trait
    6. F. Funktionale Programmierung
      1. Programmieren mit mathematischen Funktionen
      2. Charakteristiken funktionaler Programmierung
        1. First-class functions
        2. Funktionen höherer Ordnung
        3. Reine Funktionen
        4. Rekursion
        5. Verarbeitung von Listen
        6. Bedarfsauswertung
    7. G. Literaturverzeichnis
  8. H. Über den Autor
  9. Stichwortverzeichnis
  10. Kolophon
  11. Copyright