Inhaltsverzeichnis

Alle Kapitel aufklappen
Alle Kapitel zuklappen
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