An den Leser | 2 |
Vorwort | 23 |
1 Wir richten uns ein ...: Entwicklungsumgebungen für C++ | 25 |
Brauche ich eine IDE zum Programmieren? | 26 |
Multikulturelle Sachen | 27 |
Mikroweiche Sachen | 28 |
Die X-Sachen | 29 |
Angebissene Äpfel | 30 |
Lass uns endlich loslegen ... | 31 |
Übersetzen mit einer Entwicklungsumgebung | 31 |
g++ und clang++ | 35 |
... am Ende läuft es | 37 |
2 Elefanten können nicht fliegen | 39 |
Was ist eigentlich ein Computerprogramm? Ganz kurz und knapp für alle Schrödingers | 40 |
Die Sache mit dem main-Dings ... | 41 |
Unser erstes main-Dings soll laufen ... | 43 |
Endlich entspannen und träumen! | 46 |
Kreuz und quer oder alles in Reih und Glied? | 47 |
Kein Kommentar? | 47 |
Wie komme ich hier zum Bildschirm ...? | 48 |
Auf dem Weg zum Bildschirm | 50 |
Badewanne schon voll? | 50 |
Gib mir fünf | 51 |
Stream me up, Scotty | 51 |
Gegenseitige Wahrnehmung ... | 52 |
Manipulieren oder selber steuern? | 53 |
Noch ein wenig Brain-Streaming | 54 |
3 Verschiedene Typen für einen bestimmten Zweck: Die C++-Basistypen | 57 |
Starke Typen | 58 |
Mein Name ist Schrödinger | 59 |
Fundamentale und faule Typen | 59 |
Deklaration und Definition | 60 |
Ganzer Kerl dank ... | 61 |
Zeichenfolgen von Ganzzahlen | 62 |
Positive und/oder negative Haltung und ein Endteil | 62 |
Die Sache mit der Wahrheit ... | 63 |
Was nehmen wir für einen Typen? | 65 |
Die Welt der ganzen Kerle | 66 |
Was für den einen das Komma, ist für den anderen der Punkt | 67 |
Das Pünktchen in der Werkstatt | 68 |
Am Ende war das Pünktchen ... | 69 |
Zeichensalat | 70 |
Doch ein ganzer Kerl? | 71 |
Turmbau zu Babel | 72 |
Zum Flüchten ... | 73 |
Unicode-Unterstützung | 73 |
Zeichen für die Welt | 74 |
Erste "Zeichen" für eine Pause | 76 |
Auf die Größe kommt es an ... | 78 |
Je größer, desto besser | 79 |
The Final Frontier | 81 |
Gut, dass es Grenzen gibt ... | 83 |
4 Von Zahlen verweht ...: Arbeiten mit Zahlen | 85 |
Manueller Rechenschieber | 86 |
Erweiterter Grundrechenzuweisungsoperator | 87 |
Futter für den Prozessor | 88 |
Kopfrechnen | 90 |
Achtung vor den Doppelgängern | 90 |
Nachsitzen in Mathe | 92 |
Wenn Grenzen überschritten werden | 92 |
Ungenaues Pünktchen | 94 |
Schwächen offenlegen | 95 |
Mir raucht der Kopf | 97 |
Mathematische Spezialitäten | 99 |
Keine Ahnung, aber ich verwende es trotzdem | 101 |
Am Ende der Mathewelt | 104 |
Den Typ mag ich nicht | 106 |
Lass ihn doch ... | 106 |
Automatische Promotion | 107 |
Mit dem Hammer auf die Schraube | 108 |
Warum man sich nicht auf JEDEN Typ einlassen sollte ... | 110 |
Der sanfte Typ | 112 |
Automatische Typenableitung | 114 |
5 Eigene Entscheidungen treffen oder das Ganze nochmal bitte: Kontrollstrukturen in C++ | 115 |
Endlich selbstständig sein und eigene Entscheidungen treffen | 116 |
Verzweigung, Abzweigung oder Kreuzung | 119 |
Wrong turn? | 121 |
Ein ganz anderer Fall | 125 |
Den Fall bearbeiten | 127 |
Den Fall analysieren | 129 |
Also sprach Zarathustra | 131 |
Immer diese Wiederholungen | 134 |
Ein Schritt vor oder einer zurück ... | 134 |
After a while ... | 135 |
Now for it! | 136 |
Fußnoten nicht vergessen! | 137 |
Nach oben oder nach unten | 137 |
Und alles noch einmal ... | 138 |
6 Von gleichen und unterschiedlichen Typen | 141 |
Gleiche Typen in einer Reihe aufstellen | 142 |
Die Frickel- und Fummelfraktion von Ze | 143 |
Die Ze-Strings | 144 |
Gib mir rohen Input (Bio-Arrays) | 145 |
Das macht keinen Spaß | 147 |
Krankheiten von Ze-Arrays und Ze-Strings | 148 |
Die gleichen Typen in einer Reihe aufstellen und wieder zurück | 150 |
Die Komfortklasse(n) von Ze++ | 150 |
Reduzierter Bioanteil in vector | 151 |
Reduzierter Bioanteil in string | 152 |
Nie mehr Bio(-Arrays) | 153 |
Am Ende hat es doch noch Spaß gemacht | 155 |
Die Mischlinge | 157 |
Zugriff auf die Mischlinge | 158 |
Endlich echte Schuhdaten | 159 |
Die gemischten Typen sind echt nützlich | 162 |
Von Unionen, Aufzählungen und Synonymen | 164 |
Die Lehre der Synonymie | 169 |
Leipziger Allerlei | 170 |
typedef Schrödinger hat_alles_kapiert_t | 172 |
Weißt du, wie viele Sternlein am Himmrl stehen? | 174 |
Ich weiß, wo du wohnst ...! | 175 |
Einbruch in fremde Wohnungen | 176 |
Wohnorte ermitteln | 176 |
Sternenkunde | 177 |
Ze-Zeugs, Zeiger und wo soll das hinführen ...?! | 178 |
Zeiger auf nichts ...! | 180 |
Wo geht’s hier zur "Milky Way"? | 181 |
Wo gibt’s hier frischen RAM? | 183 |
Alles neu | 183 |
Speicherhalde und Müllbeseitigung | 184 |
RAM mit WoW-Freunden auf Anfrage | 186 |
RAM Unleashed | 189 |
7 Funktionen, das Ende von Copy & Paste ... | 193 |
Die Geister, die ich rufen will | 194 |
Meine Hausgeister | 195 |
Erster Kontakt zum Jenseits | 197 |
Geisterjäger im Wohnzimmer | 199 |
Opfergaben für die Geister | 201 |
Als Kopie übergeben (Call-by-Value) | 201 |
Als Adresse übergeben (Call-by-Reference) | 202 |
Referenzen als Funktionsparameter | 203 |
Ze-Zeugs als Funktionsparameter | 204 |
Strukturen und Klassen als Parameter | 205 |
Unsere Gaben wurden angenommen ... | 206 |
Unendliche Stille | 208 |
Das Jenseits antwortet dir | 211 |
Zeiger als Rückgabewert | 212 |
Dinge, die man besser nicht beschwören sollte ... | 1 |
Referenzen als Rückgabewert | 214 |
Die Stille ist zerrissen | 215 |
Hausgeister zurückgeben ... | 217 |
Jetzt bist du ein Medium | 218 |
Spezielle Geister | 220 |
Werte für den Notfall ... | 220 |
Gleicher Name, unterschiedliche Typen | 221 |
Rollerblades für Funktionen? | 221 |
main Programmende | 223 |
Jenseits von Eden | 224 |
Am Ende der Geisterwelt | 227 |
8 Wie aus Chaos Ordnung entsteht: Schlüsselwörter für Typen | 229 |
Eigenschaften ohne Ende | 230 |
Klasse, die Speicherklasse | 230 |
Typqualifikationen | 232 |
... und für die Funktionen auch noch Extrawürstchen | 233 |
Mindesthaltbarkeitsdatum ändern | 234 |
Gleich-Gültigkeitsbereich | 238 |
Extrawurst-Gültigkeitsbereich | 241 |
Einen neuen Lebensraum schaffen | 242 |
Betreten des neuen Lebensraumes | 243 |
Using me | 244 |
Ein eigenes kleines Königreich | 246 |
Anti-Globalisierung | 249 |
Anonymer Lebensraum | 250 |
Lebensraum im Wohnzimmer | 252 |
Das #Ding vor dem Compiler | 255 |
#include "paste ohne copy" | 256 |
#define "Symbol" und "Makro" | 256 |
Die Übersetzung dirigieren | 258 |
#Ich bestimme, was #du bekommst | 259 |
"No such file or directory", oder wo bin ich hier ... | 260 |
Makros und Symbole, oder doch lieber nicht? | 261 |
#Ich h### all## v##sch###t | 263 |
Und jetzt alle zusammen! | 265 |
Die Zutaten für den leckeren Kuchen | 266 |
"Symbol(s) not found", oder eine Zutat fehlt | 267 |
Die Einkaufsliste mit den Zutaten | 268 |
Eine nützliche Einkaufsliste, was alles so in einer Headerdatei verwenden werden könnte/sollte/muss ... | 268 |
Die Zutaten vorbereiten und abwiegen | 269 |
... und jetzt alles in die Schüssel | 270 |
Rein ins Vergnügen | 271 |
Meister der Quelldateien | 275 |
9 Von Hexenmeistern, Todesrittern und Datenkapseln | 277 |
Oben-ohne-Programmierung | 278 |
Klasse, Klassen! | 279 |
Objekte zum Mitnehmen | 279 |
Ein Objekt erblickt das Licht der Welt | 280 |
Kontrolle: Du kommst hier nicht durch | 282 |
Bei Klassendefinitionen den Überblick behalten | 284 |
Tieferer Einblick in die Elementfunktionen der Datenkapsel | 286 |
Du darfst hier nur lesen | 288 |
Elementfunktionen voll im Einsatz | 289 |
Toll, diese Klassenfunktionen | 291 |
Objekte erstellen | 293 |
Objekte auf die Welt bringen | 294 |
Zugriff auf die Öffentlichkeit der Klasse | 295 |
Indirekter Zugriff auf die Öffentlichkeit | 295 |
Objekte verwenden | 296 |
Die Geschichte von Objekten | 299 |
Aufbauen und vernichten | 302 |
Dienst nach Vorschrift | 302 |
Wir übernehmen selbst ... | 303 |
Konstruktoren mit mehreren Parametern | 304 |
Konstruktoren effektiver initialisieren | 305 |
Klassenelemente direkt initialisieren | 306 |
Am Ende alles wieder saubermachen ... | 306 |
Frühjahrsputz | 307 |
(K)ein Kartenhaus | 310 |
Deep inside | 312 |
Spezielle Konstruktoren | 312 |
Praxis Dr. Schrödinger | 315 |
Wohnung von Dr. Schrödinger | 317 |
The Big Three | 318 |
Spezielle Daten in der Kapsel | 319 |
Gute Freunde kann niemand trennen ... | 321 |
*Gong* Die letzte Runde wird eingeläutet | 323 |
Kampfanalyse | 328 |
10 Kino + WoW + Programmieren = viel Spaß: Überladen von Operatoren | 331 |
Eigene Rechengesetze | 332 |
Gestatten: operator | 332 |
Gesetze für die Herren Operatoren | 333 |
Operatoren nur für Freunde | 334 |
Die Pärchen verwenden die Operatoren | 335 |
Mit vereinten Kräften | 337 |
Glückliche Pärchen | 340 |
Einsame Operatoren überladen | 344 |
Das einsame Leben der einsamen Operatoren | 346 |
Am Ende bleibt ein einsamer Operator | 349 |
Weitere Operatoren überladen | 351 |
Logisch? Fast immer! | 351 |
"Typenverbiegenumwandler" überladen | 351 |
Input-Output-Kompott ... | 352 |
Spezielle Operatorüberladungen in der Praxis | 354 |
Spezialitäten auf dem Sofa | 360 |
Funktionsobjekte | 360 |
Indexoperator [ ] überladen | 361 |
new und delete überladen | 361 |
11 Schrödinger macht sein Testament: Abgeleitete Klassen | 363 |
Erben ohne Erbschaftssteuer | 364 |
Ewig schleichen die Erben | 367 |
Damit keiner leer ausgeht | 371 |
Jetzt das Kleingedruckte lesen | 373 |
Zugriffsrechte für den Beerbten | 373 |
News: Konstruktoren vererben (C++11) | 376 |
Das Kleingedruckte in der Praxis | 377 |
So macht erben langsam Spaß | 380 |
Private Mitglieder durchreichen ... | 381 |
Erbe verwenden und erweitern | 382 |
Redefinition | 383 |
Use me ... | 383 |
Unser Anlageberater verwaltet das Erbe | 385 |
Ordentlich angelegt | 387 |
Konstruktives und destruktives Vererben | 389 |
Implizite Klassenumwandlung | 391 |
Wer bekommt was ... | 392 |
Keiner geht leer aus ... | 394 |
Mehrfachvererbung | 396 |
Mehrfachvererbung in der Praxis | 398 |
Lohnt sich die Mehrfachvererbung überhaupt? | 401 |
Virtuelles Vererben | 403 |
Virtuelle Teilchen verwenden | 405 |
Zwischen Virtualität und Realität | 406 |
Abstrakte Welten | 408 |
Ein alter Bekannter ... | 408 |
Abstrakte Vielgestaltigkeit | 410 |
Jetzt wird es vielseitig – Polymorphie | 411 |
Virtuelle Zerstörungskraft | 413 |
Was vom Abstrakten übrig blieb | 414 |
Was bist du denn? | 415 |
override und final | 416 |
12 Ausstechformen für die Plätzchen: Templates | 419 |
Funktionen zum Ausstechen | 420 |
Verschiedene Teigsorten | 422 |
Plätzchen backen | 424 |
Am Ende sind nur noch Krümel da ... | 428 |
Klassen zum Ausstechen | 429 |
Klassen-Ausstecher-Elementfunktion definieren | 430 |
Klassen-Ausstecher-Elementfunktion überschreiben | 431 |
Objekte ausstechen | 432 |
Klassen-Ausstecher in der Praxis | 433 |
Klassen-Ausstecher in der Wohnung | 438 |
13 Der Schleudersitz für den Notfall: Ausnahmebehandlung | 441 |
Versuchen, werfen und auffangen | 442 |
Noch ein paar Hinweise für das Werfen | 444 |
Jetzt schmeiß schon! | 446 |
Was passiert danach ...? | 447 |
Homerun | 450 |
Mit Klassen um sich schmeißen | 453 |
Nix wie weg hier | 453 |
Schmeißen mit ganzen Klassen | 455 |
Homerun mit Klassen | 458 |
(Standard-)Ausnahmen im Angebot | 461 |
What ist dein Problem ...? | 462 |
Ausnahmen im System | 463 |
Wir probieren es aus | 464 |
Logischer Fehler: out_of_range | 464 |
Logischer Fehler: invalid_argument | 465 |
Logischer Fehler: length_error | 466 |
Logischer Fehler: ios_base::failure | 467 |
Standardausnahme-Kontrolle | 468 |
Ausnahme-Spezifikation und noexcept ? | 470 |
noexpect | 470 |
Hasta la vista, baby | 471 |
Ausnahmen verweigern | 472 |
Keine Erwartungen | 474 |
14 Unterwäsche, 100 % Baumwolle, Doppelripp | 475 |
Schurz, Schürzen, Schürzenjäger | 476 |
Strings anlegen und zuweisen | 476 |
Zugriff auf die einzelnen Zeichen | 479 |
Wie groß isses denn? | 480 |
Rohe Strings | 480 |
Noch mehr Unterwäsche | 481 |
Und noch mehr davon | 483 |
Klamottenkiste | 485 |
String konvertieren und manipulieren | 485 |
Such! | 486 |
Überladene Operatoren und Ein-/Ausgabe | 488 |
Ich kann’s nicht mehr hören: Strings | 490 |
Alles sauber dank "Schwarzer Zwerg" | 494 |
15 Ströme ohne Isolierkabel verwenden: Der Umgang mit Streams und Dateien | 495 |
Gib aus den Strom | 496 |
Rohe Eier raus ... | 498 |
Mehr formatierter Output bitte | 499 |
Wir schwenken die Flagge ... | 500 |
Jetzt ist es raus ... | 502 |
Wir ändern die Richtung | 505 |
Rohe Eier rein ... | 505 |
Wo ist mein Input? | 507 |
Jetzt ist es drin ... | 511 |
Wir manipulieren die Ströme | 513 |
Manipulation ist alles ... | 516 |
Ordentlich manipuliert ... | 520 |
Auch ein Strom hat seine Fehler | 522 |
Erst den Strom abstellen ... | 524 |
Die Sicherung ist geflogen | 525 |
Kann man auch was speichern? | 526 |
Datei-Slang | 526 |
Vorhandene Ströme für Dateien | 527 |
Strom für die Datei anschließen | 527 |
Plug-ins für den Dateistrom | 528 |
Den Dateistecker ziehen | 530 |
Alles gesichert ...? | 531 |
Sauber lesbare Sache | 531 |
Stück für Stück | 532 |
Zeile für Zeile | 534 |
Ganze Happen ... | 535 |
Wahlfreier Zugriff | 536 |
Daten wiederherstellen | 537 |
Ein Strom für einen String? | 541 |
Schürzenjäger-Strom | 543 |
Ohne Isolation | 545 |
16 Ausstechformen für Faule: Einführung in die Standard Template Library (STL) | 547 |
Fertigkuchen von Dr. STL ...? | 548 |
Verschiedene Behälter (Container) | 549 |
Algorithmen und Iteratoren | 551 |
Besser als "Selbermachen" | 552 |
... und schmeckt auch noch gut! | 555 |
Detaillierteres Arbeiten mit sequenziellen Fertigkuchen | 558 |
Behälter erstellen | 558 |
Zutaten hinzufügen | 559 |
Zugriff auf den Teig | 560 |
Wie viel passt rein | 561 |
Raus damit ...! | 561 |
Tausch mit mir, oder gib mir alle | 562 |
Mixen, sortieren und rühren | 562 |
Sequenzielle Fertigkuchen abschmecken | 563 |
Bereit zum Essen ... | 568 |
Detaillierteres Arbeiten mit assoziativen Fertigkuchen | 570 |
set und multiset | 571 |
map und multimap | 572 |
Bitte ein Bit-Feld ...! | 572 |
Assoziative Kuchen backen | 573 |
(multi)set me up | 573 |
Now (multi)map me! | 575 |
Bitte ein Bit! | 576 |
Auch assoziative Kuchen kann man essen | 579 |
Zwischen Fertigkuchen und weiteren Zutaten | 581 |
Funktionsobjekte | 581 |
Kategorie von Iteratoren | 583 |
Iterator-Adapter | 585 |
Die Hilfsmittel für Fertigkuchen und Zutaten im Einsatz | 586 |
Hilfe für den Iterator | 588 |
Allmählich wird es öde ... | 589 |
Die fleißigen Arbeiter | 592 |
Nicht-modifizierende Algorithmen | 592 |
Modifizierende Algorithmen | 593 |
Löschende Algorithmen | 594 |
Mutierende Algorithmen | 595 |
Sortierende Algorithmen | 596 |
Algorithmen für sortierte Bereiche | 597 |
Algorithmen verwenden | 598 |
Ende gut | 602 |
17 Schöne neue Welt C++11: C++11 - der neue Standard | 605 |
C++ auf dem neuesten Stand(ard) | 606 |
auto/decltype | 607 |
Einfachere Initialisierung | 607 |
Lambda-Funktionen | 608 |
Range-based-loop | 608 |
Explizite delete- und default-Funktionen | 609 |
nullptr | 609 |
constexpr | 610 |
Ein Konstruktor ruft einen anderen Konstruktor auf | 611 |
Move your body | 611 |
Neues Zeugs im Einsatz | 613 |
auto/decltype | 613 |
{}-Initialisierer verwenden | 613 |
Lambda-Funktion | 614 |
Move my own class | 615 |
Cool, das neue Zeugs | 616 |
Weitere nützliche Features | 617 |
Noch mehr Neuigkeiten ... | 619 |
Ein neues Array? | 619 |
Eine neue verkettete Liste? | 620 |
Hasch? Ist das nicht illegal?! | 620 |
Neue Algorithmen | 621 |
Tuple? Tulpe? | 622 |
Neue Planeten braucht das Universum | 623 |
Neue Backmischungen sind auch gut | 626 |
Kluge Zeiger | 628 |
Ich bin der Klügste hier (shared_ptr) | 630 |
Schwacher Zeiger (weak_ptr) | 631 |
Egoistischer, aber kluger Zeiger (unique_ptr) | 633 |
Klug auch in der Praxis | 634 |
Bist du auch so klug ...? | 637 |
Von Hieroglyphen und regulären Ausdrücken | 639 |
Mini-Sprachkurs zu den Hieroglyphen | 639 |
Objekt für die Hieroglyphen | 643 |
Die Algorithmen für Hieroglyphen | 643 |
Suchergebnis analysieren | 644 |
Suchen mit Hieroglyphen | 645 |
Cleopatra ist da ... | 652 |
Parallele Welten | 654 |
Viele Fäden erzeugen | 655 |
Bist du jetzt ein Faden oder nicht? | 657 |
Argumente für den Thread | 657 |
Wir nehmen jetzt die Fäden in die Hand | 658 |
Nur nicht den Faden verlieren | 661 |
Schütze deine Daten | 663 |
Ein Schloss für den Mutex | 666 |
Sicheres Initialisieren | 667 |
Totgesperrt | 668 |
Einmal bitte ... | 670 |
Am Ende des Fadens ... | 672 |
"Konditions"-Variable ...? | 672 |
Zusammenfassung | 674 |
18 C++ 14 – der Neue!: C++14 – der allerneueste Standard | 675 |
Schon wieder ein neuer Standard? | 676 |
Der Compiler weiß es doch sowieso immer besser | 677 |
Dann mach es doch auch selbst bei den Lambda-Funktionen | 677 |
Gammelcode an den Compiler verraten? | 678 |
Etwas für die Bitverdreher unter uns | 679 |
Und dann noch etwas für die Zahlenzerstückler | 680 |
Mr. Holmes, bitte übernehmen Sie ... | 681 |
Der Tanz mit den Lambda-Parametern | 682 |
Alte Sachen aufheben oder ausmisten? | 683 |
Mir reicht es jetzt mit der neuen Welt | 684 |
Noch ein paar mehr C++14-Sachen | 685 |
Index | 689 |