Suchen und Finden
Service
Infos und Kontakt
Auf einen Blick
5
Inhaltsverzeichnis
6
Vorwort zur 9. Auflage
17
Vorwort
18
Teil I Objektorientierte Programmierung mit C++
20
1 Einführung
22
1.1 Compiler
25
2 Grundlegende Begriffe
26
2.1 Das erste Programm
26
2.1.1 Struktur eines C++-Programms
32
2.1.2 Integrierte Entwicklungsumgebung (IDE) für Windows
33
2.1.3 Andere Editoren und Entwicklungsumgebungen
35
2.1.4 KDevelop - Entwicklungsumgebung für Linux/KDE
38
2.1.5 Namenskonventionen
39
2.2 Einfache Datentypen und Operatoren
40
2.2.1 Ausdruck
40
2.2.2 Ganze Zahlen
41
2.2.3 Reelle Zahlen
46
2.2.4 Konstante
51
2.2.5 Zeichen
52
2.2.6 Logischer Datentyp bool
55
2.2.7 Referenzen
57
2.2.8 Regeln zum Bilden von Ausdrücken
58
2.3 Gültigkeitsbereich und Sichtbarkeit
59
2.3.1 Namespace std
61
2.4 Kontrollstrukturen
62
2.4.1 Anweisungen
62
2.4.2 Sequenz (Reihung)
64
2.4.3 Auswahl (Selektion, Verzweigung)
64
2.4.4 Fallunterscheidungen mit switch
72
2.4.5 Wiederholungen
74
2.4.6 Kontrolle mit break und continue
82
2.5 Benutzerdefinierte und zusammengesetzte Datentypen
84
2.5.1 Aufzählungstypen
84
2.5.2 Arrays: Der C++-Standardtyp vector
86
2.5.3 Zeichenketten: Der C++-Standardtyp string
92
2.5.4 Strukturierte Datentypen
94
2.5.5 Komplexe Zahlen: Der C++-Standardtyp complex
95
3 Einfache Ein- und Ausgabe
98
3.1 Standardein- und -ausgabe
98
3.2 Ein- und Ausgabe mit Dateien
101
4 Programmstrukturierung
106
4.1 Funktionen
106
4.1.1 Aufbau und Prototypen
107
4.1.2 Gültigkeitsbereiche und Sichtbarkeit in Funktionen
110
4.2 Schnittstellen zum Datentransfer
112
4.2.1 Übergabe per Wert
112
4.2.2 Übergabe per Referenz
117
4.2.3 Gefahren bei der Rückgabe von Referenzen
118
4.2.4 Vorgegebene Parameterwerte und variable Parameterzahl
119
4.2.5 Überladen von Funktionen
120
4.2.6 Funktion main()
123
4.2.7 Beispiel Taschenrechnersimulation
123
4.2.8 Spezifikation von Funktionen
129
4.3 Modulare Programmgestaltung
131
4.3.1 Steuerung der Übersetzung nur mit #include
132
4.3.2 Einbinden vor übersetzter Programmteile
132
4.3.3 Datei übergreifende Gültigkeit und Sichtbarkeit
134
4.3.4 Übersetzungseinheit, Deklaration, Definition
136
4.3.5 Compilerdirektiven und Makros
139
4.4 Funktions-Templates
146
4.4.1 Spezialisierung von Templates
149
4.4.2 Einbinden von Templates
150
4.5 inline-Funktionen
152
4.6 Standardfunktionen / Bibliotheken
154
5 Objektorientierung
156
5.1 Abstrakte Datentypen
156
5.2 Klassen und Objekte
158
5.2.1 inline-Elementfunktionen
162
5.3 Initialisierung und Konstruktoren
163
5.3.1 Standardkonstruktor
164
5.3.2 Allgemeine Konstruktoren
165
5.3.3 Kopierkonstruktor
168
5.3.4 Typumwandlungskonstruktor
170
5.4 Beispiel: Klasse für rationale Zahlen
172
5.4.1 Aufgabenstellung
172
5.4.2 Entwurf
173
5.4.3 Implementation
177
5.5 const-Objekte und Methoden
182
5.6 Faustregeln zur Konstruktion von Schnittstellen
183
5.7 Destruktoren
187
5.8 Wie kommt man zu Klassen und Objekten? Ein Beispiel
189
5.8.1 Einige Analyse-Überlegungen
190
5.8.2 Design
193
5.9 Gegenseitige Abhängigkeit von Klassen
196
6 Intermezzo: Zeiger
200
6.1 Zeiger und Adressen
200
6.2 C-Arrays
204
6.2.1 C-Arrays und sizeof
206
6.2.2 Indexoperator bei C-Arrays
207
6.2.3 Initialisierung von C-Arrays
207
6.2.4 Zeigerarithmetik
207
6.3 C-Zeichenketten
209
6.4 Dynamische Datenobjekte
216
6.4.1 Freigeben dynamischer Objekte
219
6.5 Zeiger und Funktionen
222
6.5.1 Parameterübergabe mit Zeigern
222
6.5.2 Parameter des main-Programms
225
6.5.3 Gefahren bei der Rückgabe von Zeigern
225
6.6 Mehrdimensionale C-Arrays
227
6.6.1 Statische mehrdimensionale C-Arrays
227
6.6.2 Dynamisch erzeugte mehrdimensionale Arrays
232
6.7 Binäre Ein-/Ausgabe
234
6.8 Zeiger auf Funktionen
238
6.9 Zeiger auf Elementfunktionen und -daten
242
6.9.1 Zeiger auf Elementfunktionen
243
6.9.2 Zeiger auf Elementdaten
244
6.10 this-Zeiger
244
6.11 Komplexe Deklarationen lesen
245
7 Objektorientierung
248
7.1 Eine String-Klasse
248
7.1.1 friend-Funktionen
254
7.2 Klassenspezifische Daten und Funktionen
256
7.2.1 Klassenspezifische Konstante
259
7.3 Klassentemplates
261
7.3.1 Ein Stack-Template
261
7.3.2 Stack mit statisch festgelegter Größe
264
7.3.3 Ökonomische Instanziierung von Templates
266
7.3.4 Member-Template
268
7.3.5 Template-Metaprogrammierung
268
8 Vererbung
272
8.1 Vererbung und Initialisierung
279
8.2 Zugriffsschutz
280
8.3 Typbeziehung zwischen Ober- und Unterklasse
282
8.4 Code-Wiederverwendung
283
8.5 Überschreiben von Funktionen in abgeleiteten Klassen
285
8.6 Polymorphismus
286
8.6.1 Virtuelle Funktionen
286
8.6.2 Abstrakte Klassen
292
8.6.3 Virtuelle Destruktoren
299
8.7 Vererbung und andere Beziehungen
301
8.7.1 Vererbung
301
8.7.2 Der Teil und das Ganze
304
8.7.3 Assoziation
304
8.7.4 Benutzt-Beziehung
306
8.8 Mehrfachvererbung
306
8.8.1 Namenskonflikte
310
8.8.2 Virtuelle Basisklassen
312
8.8.3 Virtuelle Basisklassen und Initialisierung
313
9 Überladen von Operatoren
316
9.1 Rationale Zahlen - noch einmal
318
9.1.1 Arithmetische Operatoren
318
9.1.2 Ausgabeoperator <<
321
9.2 Eine Klasse für Vektoren
323
9.2.1 Index-Operator
326
9.2.2 Zuweisungsoperator =
328
9.2.3 Mathematische Vektoren
331
9.2.4 Multiplikations-Operator
332
9.3 Zuweisungsoperator und Vererbung
333
9.4 Inkrement-Operator ++
338
9.5 Typumwandlungsoperator
342
9.6 Smart-Pointer: Operatoren -> und *
344
9.6.1 Smart Pointer und die C++-Standardbibliothek
350
9.7 Objekte als Funktionen
351
10 Fehlerbehandlung
354
10.1 Ausnahmebehandlung
356
10.1.1 Exception-Spezifikation in Deklarationen
360
10.1.2 Exception-Hierarchie in C++
360
10.1.3 Besondere Fehlerbehandlungsfunktionen
363
10.1.4 Erkennen logischer Fehler
364
10.1.5 Durch Exceptions verursachte Speicherlecks vermeiden
367
10.2 Speicherbeschaffung mit new
368
11 Ein Werkzeugkasten
372
11.1 Behälterklassen (Container)
372
11.1.1 Container-Arten
375
11.2 Listen
376
11.3 Warteschlangen
383
11.4 Iteratoren
387
11.4.1 Iterator für eine Listen-Klasse
389
11.4.2 Iteratoren auf nicht-veränderliche Elemente
394
11.5 Sortierte Listen
395
11.6 Mehrdimensionale Matrizen
401
11.6.1 Zweidimensionale Matrix
402
11.6.2 Dreidimensionale Matrix
405
11.7 Fehlersuche mit Trace-Objekten
408
11.7.1 Klasse Trace
410
11.7.2 Anwendungsbeispiel
414
12 Vermischtes
418
12.1 Namensräume
418
12.2 C++-Header
421
12.3 Einbinden von C-Funktionen
423
12.4 Standard-Typumwandlungen
423
12.5 Standard-Typumwandlungsoperatoren
425
12.6 Typinformationen zur Laufzeit
429
12.6.1 Typidentifizierung mit typeid()
429
12.6.2 Anwendung: Eine Menge graphischer Objekte
430
12.6.3 Vor- und Nachteile der Laufzeittyp-Information
436
12.7 Unions
436
12.8 Bitfelder
437
12.9 Automatische Typermittlung mit auto
438
12.10 Delegierender Konstruktor
439
12.11 Netzwerk-Programmierung
440
12.12 GUI-Programmierung
441
12.12.1 Ereignisgesteuerte Programmierung
442
12.12.2 GUI-Programmierung mit Qt
442
13 Dateien und Ströme
448
13.1 Ausgabe
449
13.1.1 Formatierung der Ausgabe
451
13.2 Eingabe
455
13.2.1 Eingabe von Leerdaten mit Return
458
13.3 Manipulatoren
460
13.3.1 Eigene Manipulatoren
464
13.4 Fehlerbehandlung
465
13.5 Typumwandlung von Dateiobjekten nach bool
467
13.6 Arbeit mit Dateien
468
13.6.1 Positionierung in Dateien
469
13.6.2 Lesen und Schreiben in derselben Datei
470
13.7 Eingabe benutzerdefinierter Typen
472
13.8 Umleitung auf Strings
473
Teil II Die C++-Standardbibliothek
476
14 Aufbau und Übersicht
478
14.1 Auslassungen
480
14.2 Beispiele des Buchs und die C++-Standardbibliothek
482
15 Hilfsfunktionen und -klassen
484
15.1 Relationale Operatoren
484
15.2 Paare
484
15.3 Tupel
485
15.4 Funktionsobjekte
487
15.4.1 Arithmetische, vergleichende und logische Operationen
488
15.4.2 Funktionsobjekte zum Negieren logischer Prädikate
488
15.4.3 Binden von Argumentwerten
489
15.4.4 Zeiger auf Funktionen in Objekte umwandeln
491
16 Container
494
16.1 Gemeinsame Eigenschaften
495
16.1.1 Reversible Container
498
16.2 Sequenzen
499
16.2.1 vector
501
16.2.2 vector<bool>
502
16.2.3 list
503
16.2.4 deque
506
16.2.5 stack
508
16.2.6 queue
509
16.2.7 priority_queue
511
16.2.8 array
514
16.3 Sortierte assoziative Container
515
16.3.1 map
515
16.3.2 multimap
522
16.3.3 set
522
16.3.4 multiset
525
16.4 Hash-Container
527
16.4.1 unordered_map
529
16.4.2 unordered_multimap
535
16.4.3 unordered_set
535
16.4.4 unordered_multiset
539
16.5 bitset
539
17 Iteratoren
544
17.1 Iterator-Kategorien
545
17.1.1 Anwendung von Traits
547
17.2 distance() und advance()
550
17.3 Reverse-Iteratoren
550
17.4 Insert-Iteratoren
550
17.5 Stream-Iteratoren
553
18 Algorithmen
554
18.1 Nicht-verändernde Algoritmen
554
18.1.1 for_each
554
18.1.2 find und find_if
554
18.1.3 find_end
555
18.1.4 find_first_of
556
18.1.5 adjacent_find
556
18.1.6 count und count_if
557
18.1.7 mismatch
558
18.1.8 equal
559
18.1.9 search
559
18.1.10 search_n
560
18.2 Modifizierende Algorithmen
560
18.2.1 copy und copy_backward
560
18.2.2 swap, iter_swap und swap_ranges
562
18.2.3 transform
563
18.2.4 replace und Varianten
566
18.2.5 generate und generate_n
566
18.2.6 fill und fill_n
567
18.2.7 remove und Varianten
568
18.2.8 unique und unique_copy
569
18.2.9 reverse und reverse_copy
570
18.2.10 rotate und rotate_copy
570
18.2.11 iota
570
18.2.12 random_shuffle
571
18.2.13 partition und stable_partition
572
18.3 Sortieren und Verwandtes
573
18.3.1 sort
573
18.3.2 stable_sort
575
18.3.3 partial_sort und partial_sort_copy
575
18.3.4 nth_element
576
18.4 Binäre Suche
577
18.4.1 binary_search
578
18.4.2 lower_bound
578
18.4.3 upper_bound
579
18.4.4 equal_range
579
18.5 Verschmelzen (merge)
581
18.5.1 Verschmelzen an Ort und Stelle (inplace_merge)
583
18.6 Mengenoperationen auf sortierten Strukturen
584
18.6.1 includes
584
18.6.2 set_union
585
18.6.3 set_intersection
586
18.6.4 set_difference
587
18.6.5 set_symmetric_difference
588
18.7 Heap-Algorithmen
589
18.7.1 pop_heap
591
18.7.2 push_heap
591
18.7.3 make_heap
592
18.7.4 sort_heap
593
18.8 Minimum und Maximum
593
18.9 Lexikographischer Vergleich
595
18.10 Permutationen
595
19 Ein- und Ausgabe
598
20 Nationale Besonderheiten
600
20.1 Sprachumgebungen festlegen und ändern
600
20.1.1 locale-Elementfunktionen
601
20.1.2 Namespace std-globale Funktionen
602
20.2 Zeichenklassifizierung und -umwandlung
602
20.3 Kategorien
603
20.3.1 collate
604
20.3.2 ctype
604
20.3.3 numeric
606
20.3.4 monetary
608
20.3.5 time
611
20.3.6 messages
613
20.4 Konstruktion eigener Facetten
614
21 Numerisches
616
21.1 Komplexe Zahlen
616
21.2 Grenzwerte von Zahltypen
617
21.3 Halbnumerische Algorithmen
619
21.3.1 accumulate
619
21.3.2 inner_product
620
21.3.3 partial_sum
621
21.3.4 adjacent_difference
621
21.4 Optimierte numerische Arrays (valarray)
624
21.4.1 Konstruktoren
624
21.4.2 Elementfunktionen
625
21.4.3 Binäre Valarray-Operatoren
628
21.4.4 Mathematische Funktionen
630
21.4.5 slice
631
21.4.6 slice_array
633
21.4.7 gslice
634
21.4.8 gslice_array
637
21.4.9 mask_array
637
21.4.10 indirect_array
638
22 String
640
23 Typerkennung zur Laufzeit
650
24 Speichermanagement
652
24.1 <new>
652
24.2 <memory>
653
25 C-Header
656
25.1 <cassert>
656
25.2 <cctype>
656
25.3 <cerrno>
657
25.4 <cfloat>
657
25.5 <ciso646>
657
25.6 <climits>
658
25.7 <clocale>
658
25.8 <cmath>
658
25.9 <csetjmp>
658
25.10 <csignal>
658
25.11 <cstddef>
658
25.12 <cstdarg>
659
25.13 <cstdio>
660
25.14 <cstdlib>
660
25.15 <cstring>
661
25.15.1 Abweichung vom C-Standard
661
25.15.2 Funktionen für C-Strings
662
25.15.3 Funktionen für C-Strings maximaler Länge
663
25.15.4 Funktionen für Bytefelder
663
25.16 <ctime>
664
25.16.1 Datentypen
664
25.16.2 Funktionen
665
26 Nachwort
666
A Anhang
668
A.1 Programmierhinweise
668
A.2 Die wichtigsten C++-Schlüsselwörter
672
A.3 ASCII-Tabelle
672
A.4 Änderungen im C++-Standard
675
A.5 Rangfolge der Operatoren
676
A.6 Compilerbefehle
677
A.7 Make-Dateien
678
A.7.1 Programmerzeugung für ein Projekt
679
A.8 Installation von Qt 4
680
A.8.1 Installation von Qt4 unter Windows
680
A.8.2 Integration von Qt in ein Dev-C++-Projekt
680
A.8.3 Installation von Qt4 unter Linux
681
A.9 Lösungen zu den Übungsaufgaben
682
Kapitel 2
682
Kapitel 3
688
Kapitel 4
691
Kapitel 5
699
Kapitel 6
705
Kapitel 7
711
Kapitel 8
714
Kapitel 9
716
Kapitel 10
722
Kapitel 11
723
Kapitel 12
728
Kapitel 15
729
Kapitel 16
730
Kapitel 18
732
Literaturverzeichnis
736
OOP-Glossar
738
Stichwortverzeichnis
746
Alle Preise verstehen sich inklusive der gesetzlichen MwSt.; Ersparnis im Vergleich zur Printversion















