Dieter Bär
Schrödinger programmiert C++
Das etwas andere Fachbuch. Jetzt mit C++14 und Syntaxhighlighting
Dieter Bär
Schrödinger programmiert C++
Das etwas andere Fachbuch. Jetzt mit C++14 und Syntaxhighlighting
- Broschiertes Buch
- Merkliste
- Auf die Merkliste
- Bewerten Bewerten
- Teilen
- Produkt teilen
- Produkterinnerung
- Produkterinnerung
Schrödinger ist unser Mann fürs Programmieren! Er kann schon was, aber noch nicht C++. Schlau ist er, auch neugierig, aber zuweilen ungeduldig und etwas chaotisch. Er hasst Katzen und liebt WoW. Eigentlich der perfekte Partner, um endlich mal gründlich C++ zu lernen.
Zum Buch: Ein Traum! Die volle Packung C++. Die nötige Theorie, viele Hinweise und Tipps [im Büro], Unmengen von gutem, aber auch schlechtem Code, der verbessert und repariert werden will [in der Werkstatt] mit viel Kaffee und Übungen und den verdienten Pausen [zu Hause im Wohnzimmer]. Und mittendrin ist Schrödinger und…mehr
Schrödinger ist unser Mann fürs Programmieren! Er kann schon was, aber noch nicht C++. Schlau ist er, auch neugierig, aber zuweilen ungeduldig und etwas chaotisch. Er hasst Katzen und liebt WoW. Eigentlich der perfekte Partner, um endlich mal gründlich C++ zu lernen.
Zum Buch:
Ein Traum! Die volle Packung C++. Die nötige Theorie, viele Hinweise und Tipps [im Büro], Unmengen von gutem, aber auch schlechtem Code, der verbessert und repariert werden will [in der Werkstatt] mit viel Kaffee und Übungen und den verdienten Pausen [zu Hause im Wohnzimmer]. Und mittendrin ist Schrödinger und natürlich Du!
Schrödinger garantiert:
- Ausführlicher Einstieg in ANSI C++
- Doch auch für Fortgeschrittene ist einiges dabei
- Für die tägliche Programmierarbeit geeignet
- Jede Menge guter Beispiele
- Leichtes Lernen durch Abwechslung und Spaß
- Für Einsteiger, Umsteiger und Fortgeschrittene
Aus dem Inhalt:
Ausführlicher Einstieg in ANSI C++Von Entwicklungsumgebungen, Basisdatentypen, Kontrollstrukturen, Arrays, Strings, Vektoren und Co. über Klassen und Streams bis zur STL und zu C++14Für die tägliche Programmierarbeit absolut geeignetEine Menge guter Beispiele, ach, unzählige davon!Für Einsteiger und Umsteiger perfekt
Die Fachpresse zur Vorauflage:
iX - Magazin für professionelle Informationstechnik: »Eine locker zu lesende Einführung für Einsteiger.«
freiesMagazin: »Wenn man sich als Leser auf dieses ungewohnte Konzept einlässt, hat man viel Spaß an der Lektüre«
c't: »Das Buch eröffnet einen praxisnahen Zugang zur Arbeit mit C++. «
Zum Buch:
Ein Traum! Die volle Packung C++. Die nötige Theorie, viele Hinweise und Tipps [im Büro], Unmengen von gutem, aber auch schlechtem Code, der verbessert und repariert werden will [in der Werkstatt] mit viel Kaffee und Übungen und den verdienten Pausen [zu Hause im Wohnzimmer]. Und mittendrin ist Schrödinger und natürlich Du!
Schrödinger garantiert:
- Ausführlicher Einstieg in ANSI C++
- Doch auch für Fortgeschrittene ist einiges dabei
- Für die tägliche Programmierarbeit geeignet
- Jede Menge guter Beispiele
- Leichtes Lernen durch Abwechslung und Spaß
- Für Einsteiger, Umsteiger und Fortgeschrittene
Aus dem Inhalt:
Ausführlicher Einstieg in ANSI C++Von Entwicklungsumgebungen, Basisdatentypen, Kontrollstrukturen, Arrays, Strings, Vektoren und Co. über Klassen und Streams bis zur STL und zu C++14Für die tägliche Programmierarbeit absolut geeignetEine Menge guter Beispiele, ach, unzählige davon!Für Einsteiger und Umsteiger perfekt
Die Fachpresse zur Vorauflage:
iX - Magazin für professionelle Informationstechnik: »Eine locker zu lesende Einführung für Einsteiger.«
freiesMagazin: »Wenn man sich als Leser auf dieses ungewohnte Konzept einlässt, hat man viel Spaß an der Lektüre«
c't: »Das Buch eröffnet einen praxisnahen Zugang zur Arbeit mit C++. «
Produktdetails
- Produktdetails
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- 2., aktualisierte und erweiterte Auflage
- Seitenzahl: 696
- Erscheinungstermin: 12. Oktober 2015
- Deutsch
- Abmessung: 234mm x 201mm x 43mm
- Gewicht: 1628g
- ISBN-13: 9783836238243
- ISBN-10: 3836238241
- Artikelnr.: 42934894
- Rheinwerk Computing
- Verlag: Rheinwerk Computing / Rheinwerk Verlag
- 2., aktualisierte und erweiterte Auflage
- Seitenzahl: 696
- Erscheinungstermin: 12. Oktober 2015
- Deutsch
- Abmessung: 234mm x 201mm x 43mm
- Gewicht: 1628g
- ISBN-13: 9783836238243
- ISBN-10: 3836238241
- Artikelnr.: 42934894
Bär, DieterEr kennt Schrödinger wohl am besten: Dieter Bär. War ein Bier mit ihm trinken und ist zu Recht stolz, dass sein Kumpel in die Liga der echten Programmierer aufgestiegen ist. Bär kann nicht nur C++, auch C und Perl kann er auch nicht lassen.
An den Leser ... 2
Schrödingers Büro ... 4
Schrödingers Werkstatt ... 6
Schrödingers Wohnzimmer ... 8
Impressum ... 10
Inhaltsverzeichnis ... 12
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, aber Schrödinger kann programmieren: Erste Schritte in C++ ... 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, dem Sternchen und anderen ungemütlichen Sachen: Arrays, Strings, Vektoren, Strukturen und Zeiger ... 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
1, 2, Freddy kommt vorbei, 3, 4, schließe deine Tür ... ... 165
Die Lehre der Synonymie ... 169
Leipziger Allerlei ... 170
typedef Schrödinger hat_alles_kapiert_t ... 172
Weißt du, wie viele Sternlein am Himmel 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 ...: Funktionen ... 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 ... ... 212
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, Namensbereiche und die Präprozessor-Direktiven ... 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 verwendet 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: Klassen ... 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: Die Standardklasse string ... 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, und wie viel ist drin ...? ... 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, baby! ... 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, alles 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
Schrödingers Büro ... 4
Schrödingers Werkstatt ... 6
Schrödingers Wohnzimmer ... 8
Impressum ... 10
Inhaltsverzeichnis ... 12
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, aber Schrödinger kann programmieren: Erste Schritte in C++ ... 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, dem Sternchen und anderen ungemütlichen Sachen: Arrays, Strings, Vektoren, Strukturen und Zeiger ... 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
1, 2, Freddy kommt vorbei, 3, 4, schließe deine Tür ... ... 165
Die Lehre der Synonymie ... 169
Leipziger Allerlei ... 170
typedef Schrödinger hat_alles_kapiert_t ... 172
Weißt du, wie viele Sternlein am Himmel 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 ...: Funktionen ... 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 ... ... 212
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, Namensbereiche und die Präprozessor-Direktiven ... 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 verwendet 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: Klassen ... 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: Die Standardklasse string ... 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, und wie viel ist drin ...? ... 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, baby! ... 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, alles 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
An den Leser ... 2
Schrödingers Büro ... 4
Schrödingers Werkstatt ... 6
Schrödingers Wohnzimmer ... 8
Impressum ... 10
Inhaltsverzeichnis ... 12
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, aber Schrödinger kann programmieren: Erste Schritte in C++ ... 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, dem Sternchen und anderen ungemütlichen Sachen: Arrays, Strings, Vektoren, Strukturen und Zeiger ... 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
1, 2, Freddy kommt vorbei, 3, 4, schließe deine Tür ... ... 165
Die Lehre der Synonymie ... 169
Leipziger Allerlei ... 170
typedef Schrödinger hat_alles_kapiert_t ... 172
Weißt du, wie viele Sternlein am Himmel 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 ...: Funktionen ... 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 ... ... 212
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, Namensbereiche und die Präprozessor-Direktiven ... 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 verwendet 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: Klassen ... 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: Die Standardklasse string ... 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, und wie viel ist drin ...? ... 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, baby! ... 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, alles 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
Schrödingers Büro ... 4
Schrödingers Werkstatt ... 6
Schrödingers Wohnzimmer ... 8
Impressum ... 10
Inhaltsverzeichnis ... 12
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, aber Schrödinger kann programmieren: Erste Schritte in C++ ... 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, dem Sternchen und anderen ungemütlichen Sachen: Arrays, Strings, Vektoren, Strukturen und Zeiger ... 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
1, 2, Freddy kommt vorbei, 3, 4, schließe deine Tür ... ... 165
Die Lehre der Synonymie ... 169
Leipziger Allerlei ... 170
typedef Schrödinger hat_alles_kapiert_t ... 172
Weißt du, wie viele Sternlein am Himmel 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 ...: Funktionen ... 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 ... ... 212
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, Namensbereiche und die Präprozessor-Direktiven ... 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 verwendet 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: Klassen ... 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: Die Standardklasse string ... 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, und wie viel ist drin ...? ... 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, baby! ... 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, alles 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