Hilfe Warenkorb Konto Anmelden
 
 
   Schnellsuche   
     zur Expertensuche                      
C++ - Das umfassende Handbuch
  Großes Bild
 
C++ - Das umfassende Handbuch
von: Torsten T. Will
Rheinwerk Computing, 2017
ISBN: 9783836243629
1067 Seiten, Download: 13274 KB
 
Format:  PDF
geeignet für: Apple iPad, Android Tablet PC's Online-Lesen PC, MAC, Laptop

Typ: A (einfacher Zugriff)

 

 
eBook anfordern
Inhaltsverzeichnis

  Vorwort 23  
  TEIL I Grundlagen 27  
  1 Das C++-Handbuch 29  
     1.1 Neu und Modern 30  
     1.2 »Dan«-Kapitel 30  
     1.3 Darstellung in diesem Buch 31  
     1.4 Verwendete Formatierungen 1  
     1.5 Sorry for my Denglish 32  
  2 Programmieren in C++ 35  
     2.1 Übersetzen 36  
     2.2 Übersetzungsphasen 36  
     2.3 Aktuelle Compiler 38  
        2.3.1 Gnu C++ 38  
        2.3.2 Clang++ der LLVM 38  
        2.3.3 Microsoft Visual Studio 38  
     2.4 Entwicklungsumgebungen 1  
     2.5 Die Kommandozeile unter Ubuntu 40  
        2.5.1 Ein Programm erstellen 41  
        2.5.2 Automatisieren mit Makefile 43  
     2.6 Die IDE »Microsoft Visual Studio Community« unter Windows 44  
     2.7 Das Beispielprogramm beschleunigen 46  
  3 C++ für Umsteiger 49  
  4 Die Grundbausteine von C++ 55  
     4.1 Kommentare 58  
     4.2 Die »include«-Direktive 58  
     4.3 Die Standardbibliothek 58  
     4.4 Die Funktion »main()« 59  
     4.5 Typen 59  
     4.6 Variablen 60  
     4.7 Initialisierung 60  
     4.8 Ausgabe auf der Konsole 61  
     4.9 Anweisungen 1  
     4.10 Ohne Eile erklärt 62  
        4.10.1 Leerräume, Bezeichner und Token 64  
        4.10.2 Kommentare 65  
        4.10.3 Funktionen und Argumente 66  
        4.10.4 Seiteneffekt-Operatoren 67  
        4.10.5 Die »main«-Funktion 68  
        4.10.6 Anweisungen 1  
        4.10.7 Ausdrücke 72  
        4.10.8 Zuweisungen 1  
        4.10.9 Typen 75  
        4.10.10 Variablen – Deklaration, Definition und Initialisierung 80  
        4.10.11 Initialisieren mit »auto« 81  
        4.10.12 Details zur »include«-Direktive und »include« direkt 81  
        4.10.13 Eingabe und Ausgabe 1  
        4.10.14 Der Namensraum »std« 83  
     4.11 Operatoren 85  
        4.11.1 Operatoren und Operanden 86  
        4.11.2 Überblick über Operatoren 87  
        4.11.3 Arithmetische Operatoren 87  
        4.11.4 Bitweise Arithmetik 88  
        4.11.5 Zusammengesetzte Zuweisung 91  
        4.11.6 Post- und Präinkrement sowie Post- und Prädekrement 92  
        4.11.7 Relationale Operatoren 92  
        4.11.8 Logische Operatoren 93  
        4.11.9 Pointer- und Dereferenzierungsoperatoren 94  
        4.11.10 Besondere Operatoren 95  
        4.11.11 Funktionsähnliche Operatoren 96  
        4.11.12 Operatorreihenfolge 97  
     4.12 Eingebaute Datentypen 1  
        4.12.1 Übersicht 99  
        4.12.2 Eingebaute Datentypen initialisieren 1  
        4.12.3 Ganzzahlen 101  
        4.12.4 Fließkommazahlen 112  
        4.12.5 Wahrheitswerte 125  
        4.12.6 Zeichentypen 127  
        4.12.7 Komplexe Zahlen 129  
     4.13 Undefiniertes und unspezifiziertes Verhalten 132  
  5 Guter Code, 1. Dan: Lesbar programmieren 135  
     5.1 Kommentare 135  
     5.2 Dokumentation 136  
     5.3 Einrückungen und Zeilenlänge 1  
     5.4 Zeilen pro Funktion und Datei 138  
     5.5 Klammern und Leerzeichen 139  
     5.6 Namen 140  
  6 Höhere Datentypen 143  
     6.1 Strings und Streams 144  
     6.2 Der Zeichenkettentyp »string« 144  
        6.2.1 Initialisierung 145  
        6.2.2 Funktionen und Methoden 146  
        6.2.3 Andere Stringtypen 147  
     6.3 Streams 148  
        6.3.1 Eingabe- und Ausgabeoperatoren 1  
        6.3.2 »getline« 151  
        6.3.3 Dateien für die Ein- und Ausgabe 151  
        6.3.4 Manipulatoren 153  
        6.3.5 Der Manipulator »endl« 153  
     6.4 Behälter und Zeiger 155  
        6.4.1 Container 155  
        6.4.2 Parametrisierte Typen 155  
     6.5 Die einfachen Sequenzcontainer 156  
        6.5.1 »array« 156  
        6.5.2 »vector« 158  
     6.6 Algorithmen 161  
     6.7 Zeiger und C-Arrays 161  
        6.7.1 Zeigertypen 162  
        6.7.2 C-Arrays 162  
  7 Funktionen 163  
     7.1 Deklaration und Definition einer Funktion 164  
     7.2 Funktionstyp 165  
     7.3 Funktionen verwenden 165  
     7.4 Eine Funktion definieren 167  
     7.5 Mehr zu Parametern 168  
        7.5.1 Call-by-Value 168  
        7.5.2 Call-by-Reference 169  
        7.5.3 Konstante Referenzen 170  
        7.5.4 Aufruf als Wert, Referenz oder konstante Referenz? 170  
     7.6 Funktionskörper 172  
     7.7 Parameter umwandeln 173  
     7.8 Funktionen überladen 175  
     7.9 Default-Parameter 177  
     7.10 Beliebig viele Argumente 179  
     7.11 Alternative Schreibweise zur Funktionsdeklaration 179  
     7.12 Spezialitäten 180  
        7.12.1 »noexcept« 180  
        7.12.2 Inline-Funktionen 181  
        7.12.3 »constexpr« 182  
        7.12.4 Gelöschte Funktionen 182  
        7.12.5 Spezialitäten bei Klassenmethoden 182  
  8 Anweisungen im Detail 1  
     8.1 Der Anweisungsblock 188  
     8.2 Die leere Anweisung 190  
     8.3 Deklarationsanweisung 191  
     8.4 Die Ausdrucksanweisung 192  
     8.5 Die »if«-Anweisung 193  
     8.6 Die »while«-Schleife 195  
     8.7 Die »do-while«-Schleife 197  
     8.8 Die »for«-Schleife 198  
     8.9 Die bereichsbasierte »for«-Schleife 200  
     8.10 Die »switch«-Verzweigung 202  
     8.11 Die »break«-Anweisung 206  
     8.12 Die »continue«-Anweisung 207  
     8.13 Die »return«-Anweisung 207  
     8.14 Die »goto«-Anweisung 209  
     8.15 Der »try-catch«-Block und »throw« 210  
     8.16 Zusammenfassung 212  
  9 Ausdrücke im Detail 213  
     9.1 Berechnungen und Seiteneffekte 1  
     9.2 Arten von Ausdrücken 215  
     9.3 Literale 216  
     9.4 Bezeichner 216  
     9.5 Klammern 217  
     9.6 Funktionsaufruf und Index-Zugriff 218  
     9.7 Zuweisung 218  
     9.8 Typumwandlung 220  
  10 Fehlerbehandlung 221  
     10.1 Fehlerbehandlung mit Fehlercodes 223  
     10.2 Was ist eine Ausnahme? 226  
        10.2.1 Ausnahmen auslösen und behandeln 227  
        10.2.2 Aufrufstapel abwickeln 228  
     10.3 Kleinere Fehlerbehandlungen 1  
     10.4 Weiterwerfen – »rethrow« 229  
     10.5 Die Reihenfolge im »catch« 230  
        10.5.1 Kein »finally« 231  
        10.5.2 Exceptions der Standardbibliothek 231  
     10.6 Typen für Exceptions 232  
     10.7 Wenn eine Exception aus »main« herausfällt 233  
  11 Guter Code, 2. Dan: Modularisierung 235  
     11.1 Programm, Bibliothek, Objektdatei 235  
     11.2 Bausteine 236  
     11.3 Trennen der Funktionalitäten 237  
     11.4 Ein modulares Beispielprojekt 238  
        11.4.1 Namensräume 241  
        11.4.2 Implementierung 242  
        11.4.3 Die Bibliothek nutzen 247  
     11.5 Spezialthema: Unity-Builds 249  
  TEIL II Objektorientierte Programmierung und mehr 251  
  12 Von der Struktur zur Klasse 253  
     12.1 Initialisierung 255  
     12.2 Rückgabe eigener Typen 256  
     12.3 Methoden statt Funktionen 257  
     12.4 Das bessere »drucke« 260  
     12.5 Eine Ausgabe wie jede andere 262  
     12.6 Methoden inline definieren 263  
     12.7 Implementierung und Definition trennen 264  
     12.8 Initialisierung per Konstruktor 265  
        12.8.1 Member-Defaultwerte in der Deklaration 267  
        12.8.2 Konstruktor-Delegation 268  
        12.8.3 Defaultwerte für die Konstruktor-Parameter 269  
        12.8.4 »init«-Methode nicht im Konstruktor aufrufen 270  
        12.8.5 Exceptions im Konstruktor 271  
     12.9 Struktur oder Klasse? 271  
        12.9.1 Kapselung 273  
        12.9.2 »public« und »private«, Struktur und Klasse 273  
        12.9.3 Daten mit »struct«, Verhalten mit »class« 273  
        12.9.4 Initialisierung von Typen mit privaten Daten 274  
     12.10 Zwischenergebnis 275  
     12.11 Verwendung eigener Datentypen 276  
        12.11.1 Klassen als Werte verwenden 278  
        12.11.2 Konstruktoren nutzen 281  
        12.11.3 Typumwandlungen 1  
        12.11.4 Kapseln und entkapseln 284  
        12.11.5 Typen lokal einen Namen geben 288  
     12.12 Typinferenz mit »auto« 291  
     12.13 Eigene Klassen in Standardcontainern 294  
  13 Namensräume und Qualifizierer 297  
     13.1 Der Namensraum »std« 297  
     13.2 Anonymer Namensraum 301  
     13.3 »static« macht lokal 303  
     13.4 »static« teilt gern 303  
     13.5 »static« macht dauerhaft 306  
        13.5.1 »inline namespace« 308  
     13.6 Zusammenfassung 309  
     13.7 Const 310  
        13.7.1 Const-Parameter 311  
        13.7.2 Const-Methoden 312  
        13.7.3 Const-Variablen 313  
        13.7.4 Const-Rückgaben 314  
        13.7.5 Const zusammen mit »static« 318  
        13.7.6 Noch konstanter mit »constexpr« 319  
        13.7.7 Un-Const mit »mutable« 322  
        13.7.8 Const-Korrektheit 323  
        13.7.9 Zusammenfassung 324  
     13.8 Flüchtig mit »volatile« 324  
  14 Guter Code, 3. Dan: Testen 327  
     14.1 Arten des Tests 327  
        14.1.1 Refactoring 329  
        14.1.2 Unittests 1  
        14.1.3 Sozial oder solitär 331  
        14.1.4 Doppelgänger 333  
        14.1.5 Suites 334  
     14.2 Frameworks 335  
        14.2.1 Arrange, Act, Assert 1  
        14.2.2 Frameworks zur Auswahl 338  
     14.3 Boost.Test 339  
     14.4 Hilfsmakros für Assertions 343  
     14.5 Ein Beispielprojekt mit Unittests 1  
        14.5.1 Privates und Öffentliches testen 347  
        14.5.2 Ein automatisches Testmodul 348  
        14.5.3 Test compilieren 351  
        14.5.4 Die Testsuite selbst zusammenbauen 351  
        14.5.5 Testen von Privatem 355  
        14.5.6 Parametrisierte Tests 356  
  15 Vererbung 359  
     15.1 Beziehungen 1  
        15.1.1 Hat-ein-Komposition 360  
        15.1.2 Hat-ein-Aggregation 360  
        15.1.3 Ist-ein-Vererbung 361  
        15.1.4 Ist-Instanz-von versus Ist-ein-Beziehung 362  
     15.2 Vererbung in C++ 362  
     15.3 Hat-ein versus ist-ein 363  
     15.4 Gemeinsamkeiten finden 364  
     15.5 Abgeleitete Typen erweitern 366  
     15.6 Methoden überschreiben 367  
     15.7 Wie Methoden funktionieren 368  
     15.8 Virtuelle Methoden 370  
     15.9 Konstruktoren in Klassenhierarchien 372  
     15.10 Typumwandlung in Klassenhierarchien 373  
        15.10.1 Die Vererbungshierarchie aufwärts umwandeln 373  
        15.10.2 Die Vererbungshierarchie abwärts umwandeln 374  
        15.10.3 Referenzen behalten auch die Typinformation 374  
     15.11 Wann virtuell? 375  
     15.12 Andere Designs zur Erweiterbarkeit 376  
  16 Der Lebenszyklus von Klassen 379  
     16.1 Erzeugung und Zerstörung 380  
     16.2 Temporary: kurzlebige Werte 382  
     16.3 Der Destruktor zum Konstruktor 383  
        16.3.1 Kein Destruktor nötig 385  
        16.3.2 Ressourcen im Destruktor 385  
     16.4 Yoda-Bedingung 387  
     16.5 Konstruktion, Destruktion und Exceptions 389  
     16.6 Kopieren 390  
     16.7 Zuweisungsoperator 393  
     16.8 Streichen von Methoden 396  
     16.9 Verschiebeoperationen 398  
        16.9.1 Was der Compiler generiert 402  
     16.10 Operatoren 403  
     16.11 Eigene Operatoren in einem Datentyp 406  
     16.12 Besondere Klassenformen 411  
        16.12.1 Abstrakte Klassen und Methoden 411  
        16.12.2 Aufzählungsklassen 412  
  17 Guter Code, 4. Dan: Sicherheit, Qualität und Nachhaltigkeit 415  
     17.1 Die Nuller-Regel 415  
        17.1.1 Die großen Fünf 415  
        17.1.2 Hilfskonstrukt per Verbot 416  
        17.1.3 Die Nuller-Regel und ihr Einsatz 417  
        17.1.4 Ausnahmen von der Nuller-Regel 418  
     17.2 RAII – Resource Acquisition Is Initialization 420  
        17.2.1 Ein Beispiel mit C 420  
        17.2.2 Besitzende Raw-Pointer 422  
        17.2.3 Von C nach C++ 423  
        17.2.4 Es muss nicht immer eine Exception sein 425  
        17.2.5 Mehrere Konstruktoren 426  
        17.2.6 Mehrphasige Initialisierung 426  
        17.2.7 Definieren, wo es gebraucht wird 427  
        17.2.8 Nothrow-new 427  
  18 Spezielles für Klassen 429  
     18.1 Darf alles sehen – »friend«-Klassen 429  
     18.2 non-public-Vererbung 434  
        18.2.1 Auswirkungen auf die Außenwelt 1  
        18.2.2 Nicht-öffentliche Vererbung in der Praxis 437  
     18.3 Signatur-Klassen als Interfaces 439  
     18.4 Multiple Vererbung 443  
        18.4.1 Multiple Vererbung in der Praxis 444  
        18.4.2 Achtung bei Typumwandlungen von Zeigern 1  
        18.4.3 Das Beobachter-Muster als praktisches Beispiel 450  
     18.5 Rautenförmige multiple Vererbung – »virtual« für Klassenhierarchien 452  
     18.6 Literale Datentypen – »constexpr« für Konstruktoren 456  
  19 Guter Code, 5. Dan: Klassisches objektorientiertes Design 459  
     19.1 Objekte in C++ 461  
     19.2 Objektorientiert designen 462  
        19.2.1 SOLID 462  
        19.2.2 Seien Sie nicht STUPID 480  
  TEIL III Fortgeschrittene Themen 1  
  20 Zeiger 483  
     20.1 Adressen 484  
     20.2 Zeiger 485  
     20.3 Gefahren von Aliasing 487  
     20.4 Heapspeicher und Stapelspeicher 489  
        20.4.1 Der Stapel 489  
        20.4.2 Der Heap 490  
     20.5 Smarte Pointer 492  
        20.5.1 »unique ptr« 494  
        20.5.2 »shared ptr« 498  
     20.6 Rohe Zeiger 501  
     20.7 C-Arrays 506  
        20.7.1 Rechnen mit Zeigern 506  
        20.7.2 Verfall von C-Arrays 507  
        20.7.3 Dynamische C-Arrays 509  
        20.7.4 Zeichenkettenliterale 510  
     20.8 Iteratoren 511  
     20.9 Zeiger als Iteratoren 513  
     20.10 Zeiger im Container 513  
     20.11 Die Ausnahme: wann das Wegräumen nicht nötig ist 514  
  21 Makros 517  
     21.1 Der Präprozessor 518  
     21.2 Vorsicht vor fehlenden Klammern 521  
     21.3 Vorsicht vor Mehrfachausführung 522  
     21.4 Typvariabilität von Makros 523  
     21.5 Zusammenfassung 526  
  22 Schnittstelle zu C 527  
     22.1 Mit Bibliotheken arbeiten 528  
     22.2 C-Header 529  
     22.3 C-Ressourcen 532  
     22.4 »void«-Pointer 532  
     22.5 Daten lesen 533  
     22.6 Das Hauptprogramm 534  
     22.7 Zusammenfassung 535  
  23 Templates 537  
     23.1 Funktionstemplates 538  
        23.1.1 Überladung 539  
        23.1.2 Ein Typ als Parameter 540  
        23.1.3 Funktionskörper eines Funktionstemplates 540  
        23.1.4 Zahlen als Templateparameter 542  
        23.1.5 Viele Funktionen 543  
        23.1.6 Parameter mit Extras 544  
        23.1.7 Methodentemplates sind auch nur Funktionstemplates 546  
     23.2 Funktionstemplates in der Standardbibliothek 547  
        23.2.1 Iteratoren statt Container als Templateparameter 548  
        23.2.2 Beispiel: Informationen über Zahlen 550  
     23.3 Eine Klasse als Funktion 551  
        23.3.1 Werte für einen »function«-Parameter 552  
        23.3.2 C-Funktionspointer 553  
        23.3.3 Die etwas andere Funktion 555  
        23.3.4 Praktische Funktoren 558  
        23.3.5 Algorithmen mit Funktoren 559  
        23.3.6 Anonyme Funktionen alias Lambda-Ausdrücke 560  
        23.3.7 Templatefunktionen ohne »template«, aber mit »auto« 564  
     23.4 Templateklassen 565  
        23.4.1 Klassentemplates implementieren 565  
        23.4.2 Methoden von Klassentemplates implementieren 566  
        23.4.3 Objekte aus Klassentemplates erzeugen 568  
        23.4.4 Klassentemplates mit mehreren formalen Datentypen 570  
        23.4.5 Klassentemplates mit Non-Type-Parameter 571  
        23.4.6 Klassentemplates mit Default 573  
        23.4.7 Klassentemplates spezialisieren 574  
     23.5 Templates mit variabler Argumentanzahl 576  
     23.6 Eigene Literale 580  
        23.6.1 Was sind Literale? 581  
        23.6.2 Namensregeln 582  
        23.6.3 Phasenweise 582  
        23.6.4 Überladungsvarianten 583  
        23.6.5 Benutzerdefiniertes Literal mittels Template 1  
        23.6.6 Roh oder gekocht 587  
        23.6.7 Automatisch zusammengefügt 588  
        23.6.8 Unicodeliterale 588  
  TEIL IV Die Standardbibliothek 591  
  24 Container 593  
     24.1 Grundlagen 594  
        24.1.1 Wiederkehrend 594  
        24.1.2 Abstrakt 595  
        24.1.3 Operationen 596  
        24.1.4 Komplexität 597  
        24.1.5 Container und ihre Iteratoren 598  
        24.1.6 Algorithmen 600  
     24.2 Iteratoren-Grundlagen 601  
        24.2.1 Iteratoren aus Containern 602  
        24.2.2 Mehr Funktionalität mit Iteratoren 603  
     24.3 Allokatoren: Speicherfragen 605  
     24.4 Container-Gemeinsamkeiten 607  
     24.5 Ein Überblick über die Standardcontainer-Klassen 608  
        24.5.1 Typaliase der Container 609  
     24.6 Die sequenziellen Containerklassen 612  
        24.6.1 Gemeinsamkeiten und Unterschiede 614  
        24.6.2 Methoden von Sequenzcontainern 615  
        24.6.3 »vector« 618  
        24.6.4 »array« 631  
        24.6.5 »deque« 636  
        24.6.6 »list« 639  
        24.6.7 »forward list« 642  
     24.7 Assoziativ und geordnet 647  
        24.7.1 Gemeinsamkeiten und Unterschiede 648  
        24.7.2 Methoden der geordneten assoziativen Container 649  
        24.7.3 »set« 651  
        24.7.4 »map« 663  
        24.7.5 »multiset« 670  
        24.7.6 »multimap« 674  
     24.8 Nur assoziativ und nicht garantiert 678  
        24.8.1 Gemeinsamkeiten und Unterschiede 682  
        24.8.2 Methoden der ungeordneten assoziativen Container 1  
        24.8.3 »unordered set« 685  
        24.8.4 »unordered map« 693  
        24.8.5 »unordered multiset« 698  
        24.8.6 »unordered multimap« 703  
     24.9 Container-Adapter 706  
     24.10 Sonderfälle: »string«, »basic string« und »vector« 707  
     24.11 Sonderfälle: »vector«, »array« und »bitset« 708  
        24.11.1 Dynamisch und kompakt: »vector« 708  
        24.11.2 Statisch: »array« und »bitset« 708  
     24.12 Sonderfall: Value-Array mit »valarray<>« 711  
  25 Container-Unterstützung 721  
     25.1 Algorithmen 721  
     25.2 Iteratoren 723  
     25.3 Iterator-Adapter 723  
     25.4 Algorithmen der Standardbibliothek 724  
     25.5 Liste der Algorithmusfunktionen 726  
     25.6 Kopie statt Zuweisung – Werte in uninitialisierten Speicherbereichen 740  
     25.7 Eigene Algorithmen 741  
  26 Guter Code, 6. Dan: Für jede Aufgabe der richtige Container 745  
     26.1 Alle Container nach Aspekten sortiert 745  
        26.1.1 Wann ist ein »vector« nicht die beste Wahl? 745  
        26.1.2 Immer sortiert: »set«, »map«, »multiset« und »multimap« 746  
        26.1.3 Im Speicher hintereinander: »vector«, »array« 746  
        26.1.4 Einfügung billig: »list« 747  
        26.1.5 Wenig Speicheroverhead: »vector«, »array« 748  
        26.1.6 Größe dynamisch: alle außer »array« 749  
     26.2 Rezepte für Container 750  
        26.2.1 Zwei Phasen? »vector« als guter »set«-Ersatz 751  
        26.2.2 Den Inhalt eines Containers auf einem Stream ausgeben 752  
        26.2.3 So statisch ist »array« gar nicht 753  
     26.3 Iteratoren sind mehr als nur Zeiger 756  
     26.4 Algorithmen je nach Container unterschiedlich implementieren 758  
  27 Streams 761  
     27.1 Ein- und Ausgabekonzept 761  
     27.2 Globale, vordefinierte Standardstreams 762  
     27.3 Methoden für die Aus- und Eingabe von Streams 1  
        27.3.1 Methoden für die unformatierte Ausgabe 764  
        27.3.2 Methoden für die (unformatierte) Eingabe 1  
     27.4 Fehlerbehandlung und Zustand von Streams 768  
        27.4.1 Methoden für die Behandlung von Fehlern bei Streams 769  
     27.5 Streams manipulieren und formatieren 771  
        27.5.1 Manipulatoren 772  
        27.5.2 Eigene Manipulatoren ohne Argumente erstellen 777  
        27.5.3 Eigene Manipulatoren mit Argumenten erstellen 779  
        27.5.4 Format-Flags direkt ändern 780  
     27.6 Streams für die Dateiein- und Dateiausgabe 782  
        27.6.1 Die Streams »ifstream«, »ofstream« und »fstream« 783  
        27.6.2 Verbindung zu einer Datei herstellen 783  
        27.6.3 Lesen und Schreiben 788  
        27.6.4 Wahlfreier Zugriff 795  
     27.7 Streams für Strings 796  
     27.8 Streampuffer 801  
  28 Standardbibliothek – Extras 805  
     28.1 »pair« und »tuple« 805  
        28.1.1 Mehrere Werte zurückgeben 806  
     28.2 Reguläre Ausdrücke 812  
        28.2.1 Matchen und Suchen 813  
        28.2.2 Ergebnis und Teile davon 813  
        28.2.3 Gefundenes Ersetzen 814  
        28.2.4 Reich an Varianten 814  
        28.2.5 Iteratoren 815  
        28.2.6 Matches 816  
        28.2.7 Optionen 816  
        28.2.8 Geschwindigkeit 816  
        28.2.9 Standardsyntax leicht gekürzt 817  
        28.2.10 Anmerkungen zu regulären Ausdrücken in C++ 1  
     28.3 Zufall 821  
        28.3.1 Einen Würfel werfen 822  
        28.3.2 Echter Zufall 824  
        28.3.3 Andere Generatoren 824  
        28.3.4 Verteilungen 1  
     28.4 Mathematisches 830  
        28.4.1 Brüche und Zeiten – »« und »« 830  
        28.4.2 Numerik mit »« 843  
        28.4.3 Vordefinierte Suffixe für benutzerdefinierte Literale 847  
     28.5 Systemfehlerbehandlung mit »system error« 849  
        28.5.1 »error code« und »error condition« 851  
        28.5.2 Fehlerkategorien 855  
        28.5.3 Eigene Fehlercodes 855  
        28.5.4 »system error«-Exception 857  
     28.6 Laufzeit-Typinformationen – »« und »« 858  
     28.7 Hilfsklassen rund um Funktoren – »« 862  
        28.7.1 Funktionsobjekte 862  
        28.7.2 Funktionsgeneratoren 866  
     28.8 Ausblick auf C++17 869  
        28.8.1 »variant« 869  
        28.8.2 »optional« und »any« 870  
        28.8.3 »string view« 871  
        28.8.4 »filesystem« 872  
        28.8.5 Spezielle mathematische Funktionen 872  
        28.8.6 »sample« 873  
        28.8.7 »search« 874  
        28.8.8 »byte« 874  
  29 Threads – Programmieren mit Mehrläufigkeit 875  
     29.1 C++-Threading-Grundlagen 876  
        29.1.1 Einer Threadfunktion Parameter übergeben 881  
        29.1.2 Einen Thread verschieben 886  
        29.1.3 Wie viele Threads starten? 888  
        29.1.4 Welcher Thread bin ich? 891  
     29.2 Gemeinsame Daten 891  
        29.2.1 Daten mit Mutexen schützen 892  
        29.2.2 Data Races 895  
        29.2.3 Interface-Design für Multithreading 896  
        29.2.4 Sperren können zum Patt führen 901  
        29.2.5 Flexibleres Sperren mit »unique lock« 903  
     29.3 Andere Möglichkeiten zur Synchronisation 904  
        29.3.1 Nur einmal aufrufen mit »once flag« und »call once« 904  
        29.3.2 Sperren zählen mit »recursive mutex« 907  
     29.4 Im eigenen Speicher mit »thread local« 908  
     29.5 Mit »condition variable« auf Ereignisse warten 909  
     29.6 Einmal warten mit »future« 914  
        29.6.1 Ausnahmebehandlung bei »future« 919  
        29.6.2 »promise« 921  
     29.7 Atomics 924  
     29.8 Zusammenfassung 930  
     29.9 Ausblick auf C++17 932  
  TEIL V Über den Standard hinaus 933  
  30 Guter Code, 7. Dan: Richtlinien 935  
     30.1 Guideline Support Library 936  
     30.2 C++ Core Guidelines 937  
        30.2.1 Motivation 937  
        30.2.2 Typsicherheit 938  
        30.2.3 Nutzen Sie RAII 940  
        30.2.4 Klassenhierarchien 942  
        30.2.5 Generische Programmierung 945  
        30.2.6 Lassen Sie sich nicht von Anachronismen verwirren 948  
  31 GUI-Programmierung mit Qt 951  
     31.1 Ein erstes Miniprogramm 955  
        31.1.1 Kurze Übersicht über die Oberfläche von Qt Creator 956  
        31.1.2 Ein einfaches Projekt erstellen 957  
     31.2 Objektbäume und Besitz 966  
     31.3 Signale und Slots 967  
        31.3.1 Verbindung zwischen Signal und Slot herstellen 967  
        31.3.2 Signal und Slot mithilfe der Qt-Referenz ermitteln 1  
     31.4 Klassenhierarchie von Qt 987  
        31.4.1 Basisklasse »QObject« 987  
        31.4.2 Weitere wichtige Klassen 987  
     31.5 Eigene Widgets mit dem Qt Designer erstellen 990  
     31.6 Widgets anordnen 996  
        31.6.1 Grundlegende Widgets für das Layout 996  
     31.7 Dialoge erstellen mit »QDialog« 1000  
     31.8 Vorgefertigte Dialoge von Qt 1008  
        31.8.1 »QMessageBox« – der klassische Nachrichtendialog 1008  
        31.8.2 »QFileDialog« – der Dateiauswahldialog 1009  
        31.8.3 »QInputDialog« – Dialog zur Eingabe von Daten 1  
        31.8.4 Weitere Dialoge 1015  
     31.9 Eigenen Dialog mit dem Qt Designer erstellen 1015  
     31.10 Grafische Bedienelemente von Qt (Qt-Widgets) 1031  
        31.10.1 Schaltflächen (Basisklasse »QAbstractButton«) 1031  
        31.10.2 Container-Widgets (Behälter-Widgets) 1033  
        31.10.3 Widgets zur Zustandsanzeige 1034  
        31.10.4 Widgets zur Eingabe 1  
        31.10.5 Onlinehilfen 1036  
     31.11 Anwendungen in einem Hauptfenster 1  
        31.11.1 Die Klasse für das Hauptfenster »QMainWindow« 1037  
     31.12 Zusammenfassung 1048  
  Cheat Sheet 1052  
  Index 1055  


nach oben


  Mehr zum Inhalt
Kapitelübersicht
Kurzinformation
Inhaltsverzeichnis
Leseprobe
Blick ins Buch
Fragen zu eBooks?

  Medientyp
  eBooks
  eJournal
  alle

  Navigation
Belletristik / Romane
Computer
Geschichte
Kultur
Medizin / Gesundheit
Philosophie / Religion
Politik
Psychologie / Pädagogik
Ratgeber
Recht
Reise / Hobbys
Technik / Wissen
Wirtschaft

  Info
Hier gelangen Sie wieder zum Online-Auftritt Ihrer Bibliothek
© 2008-2024 ciando GmbH | Impressum | Kontakt | F.A.Q. | Datenschutz