Suchen und Finden
Service
C++ lernen und verstehen. Die Sprache und ihr Strukturen
Wolfgang Soltendick
Verlag C & L Computer- und Literaturverlag GmbH, 2003
ISBN 9783936546019 , 599 Seiten
Format PDF, OL
Kopierschutz DRM
Inhalt
6
Vorwort
16
1 Einführung in die C++-Programmierung
18
1.1 Compiler-Aufrufe
18
1.1.1 Borland C++ Builder
18
1.1.2 Microsoft Visual C++
20
1.1.3 Linux
23
1.2 Zusammenfassung
25
2 Einführung
26
2.1 Prozedurale Sprachen
26
2.2 Objektorientierte Sprachen
27
2.3 Hauptelemente objektorientierter Sprachen
28
2.3.1 Objekte
28
2.3.2 Klassen
29
2.3.3 Vererbung
29
2.3.4 Wiederverwendbarkeit
29
2.3.5 Neue Datentypen
30
2.3.6 Polymorphismus
30
2.3.7 Überlagerung
30
2.4 Zusammenfassung
31
3 Grundlagen der Sprache C++
32
3.1 Der Programmaufbau
32
3.1.1 Präprozessorbefehle
32
3.1.2 Leerzeilen und Zwischenräume
33
3.1.3 Funktionen
33
3.1.4 Anweisungen
34
3.2 Die Ausgabe des Programms
35
3.3 Kommentare
36
3.4 Variablen
37
3.4.1 Ganzzahlige Variablen
37
3.4.2 Gleitkommavariablen
40
3.4.3 Konstanten
41
3.4.4 Zeichenvariablen
41
3.4.5 Übersicht
42
3.4.6 Typumwandlungen
45
3.5 Escape-Sequenzen
48
3.6 Operatoren zur Manipulation der Ausgabe
49
3.7 #define
51
3.8 Die Eingabe
52
3.9 Arithmetische Operatoren
53
3.9.1 Grundoperatoren
53
3.9.2 Restoperator
54
3.9.3 Zuweisungsoperatoren
55
3.9.4 Inkrement- und Dekrementoperator
55
3.10 Bibliotheksfunktionen
58
3.11 Zusammenfassung
60
3.12 Aufgaben
61
4 Entscheidungen
62
4.1 Operatoren für Vergleiche
62
4.2 Die if-Anweisung
64
4.3 Die if..else-Anweisung
66
4.4 Die switch-Anweisung
70
4.5 Der Bedingungsoperator
72
4.6 Logikoperatoren
73
4.6.1 Der logische UND-Operator
74
4.6.2 Der logische ODER-Operator
75
4.6.3 Der logische NICHT-Operator
75
4.6.4 Bewertungsreihenfolge
77
4.7 Zusammenfassung
78
4.8 Aufgaben
79
5 Schleifen
80
5.1 Die for-Schleife
80
5.2 Die while-Schleife
89
5.3 Die do..while-Schleife
92
5.4 Hinweise zum Einsatz der Schleifen
94
5.5 Anweisungen zur Schleifensteuerung
95
5.5.1 Die Anweisung break
95
5.5.2 Die Anweisung continue
98
5.5.3 Die Anweisung goto
100
5.6 Zusammenfassung
100
5.7 Aufgaben
101
6 Strukturen und Aufzählungen
102
6.1 Strukturen
102
6.1.1 Die erste Struktur
103
6.1.2 Die Beschreibung einer Struktur
104
6.1.3 Die Definition der Struktur
104
6.1.4 Der Zugriff auf die Komponenten
105
6.1.5 Weitere Eigenschaften
106
6.1.6 Ein weiteres Beispiel
110
6.1.7 Addition zweier Strukturen
111
6.1.8 Strukturen innerhalb von Strukturen
112
6.1.9 Ausblick
115
6.2 Der Aufzählungstyp
115
6.2.1 Monate
115
6.2.2 Ein boolescher Datentyp
117
6.2.3 Zahlenwert zuweisen
120
6.2.4 Ausgabe
121
6.3 Zusammenfassung
122
6.4 Aufgaben
123
7 Funktionen
124
7.1.1 Das Programm
124
7.1.2 Die Deklaration der Funktion
125
7.1.3 Aufruf der Funktion
126
7.1.4 Die Definition der Funktion
126
7.1.5 Bibliotheksfunktionen
127
7.1.6 Funktionen ohne separate Deklaration
127
7.2 Übergabe von Argumenten
129
7.2.1 Konstanten
129
7.2.2 Variablen
131
7.2.3 Strukturen
133
7.3 Rückgabewerte
135
7.3.1 Das Programm
136
7.3.2 Die Anweisung »return«
137
7.3.3 Strukturen als Rückgabewerte
139
7.4 Referenzen
141
7.4.1 Übergabe einfacher Datentypen
142
7.4.2 Übergabe von Strukturen
147
7.4.3 Weitere Anmerkungen
148
7.5 Überlagerte Funktionen
150
7.5.1 Unterschiedliche Parameteranzahl
150
7.5.2 Unterschiedliche Parametertypen
152
7.6 Inline-Funktionen
155
7.7 Standardargumente
157
7.8 Speicherklassen
159
7.8.1 Automatische Variablen
159
7.8.2 Externe Variablen
162
7.8.3 Statische Variablen
164
7.8.4 Übersicht
167
7.9 Referenzrückgabe
167
7.10 Zusammenfassung
169
7.11 Aufgaben
170
8 Klassen und Objekte
172
8.1 Einführung
172
8.1.1 Das Beispielprogramm
172
8.1.2 Der Aufruf
173
8.1.3 Die Festlegung der Klasse
174
8.1.4 private und public
175
8.1.5 Die Verwendung der Klasse
176
8.2 Komplexere Klassen
177
8.3 Konstruktoren
179
8.4 Destruktoren
183
8.5 Objekte als Funktionsargumente
183
8.5.1 Überlagerte Konstruktoren
185
8.5.2 Komponentenfunktionen außerhalb der Klasse definieren
186
8.5.3 Objekte als Argumente
187
8.6 Objekte als Rückgabewerte
188
8.7 Ein Hütchen-Spiel
191
8.8 Strukturen und Klassen
194
8.9 Speicherplatz
196
8.10 Statische Klassendaten
196
8.11 Hintergründe
200
8.12 Zusammenfassung
202
8.13 Aufgaben
203
9 Vektoren und Arrays
204
9.1 Grundlagen
204
9.1.1 Ein erstes Beispiel
204
9.1.2 Definition des Vektors
205
9.1.3 Die Elemente des Vektors
205
9.1.4 Zugriff auf die Elemente des Vektors
206
9.1.5 Ein weiteres Beispiel
207
9.1.6 Initialisierung von Vektoren
209
9.1.7 Mehrdimensionale Vektoren
210
9.1.8 Übergabe von Vektoren
215
9.1.9 Vektoren aus Strukturen
217
9.2 Vektoren in Klassen
220
9.3 Vektoren aus Objekten
224
9.3.1 Das Beispiel
224
9.4 Zeichenketten
228
9.4.1 Variablen
228
9.4.2 Überlauf verhindern
229
9.4.3 Konstanten
232
9.4.4 Einlesen von Zeichenketten mit Leerzeichen
232
9.4.5 Mehrzeilige Zeichenketten
234
9.4.6 Bestimmung der Länge
235
9.4.7 Kopieren einer Zeichenkette
236
9.4.8 Vektoren aus Zeichenketten
238
9.4.9 Zeichenketten in einer Klasse
240
9.4.10 Eine String-Klasse
241
9.5 Zusammenfassung
245
9.6 Aufgaben
246
10 Überlagerung von Operatoren
248
10.1 Unäre Operatoren
249
10.1.1 Das Beispiel
249
10.1.2 Das Schlüsselwort » operator«
251
10.1.3 Argumente des Operators
251
10.1.4 Rückgabewerte von Operatoren
252
10.1.5 Temporäre Objekte ohne Namen
254
10.1.6 Beschränkungen
256
10.2 Binäre Operatoren
258
10.2.1 Arithmetische Operatoren
258
10.2.2 Verkettung von Zeichenketten
261
10.2.3 Mehrfache Überlagerung
264
10.2.4 Vergleiche
265
10.2.5 Zuweisungsoperatoren
269
10.3 Umwandlung von Daten
272
10.3.1 Interne Datentypen
273
10.3.2 Objekte und interne Datentypen
274
10.3.3 Objekte unterschiedlicher Typen
287
10.4 Weitere Anmerkungen
295
10.4.1 Verwendung entsprechender Bedeutungen
295
10.4.2 Verwendung ähnlicher Syntax
296
10.4.3 Zurückhaltung üben
296
10.4.4 Unklarheiten vermeiden
297
10.4.5 Nicht überlagerbare Operatoren
297
10.5 Zusammenfassung
298
10.6 Aufgaben
299
11 Vererbung
300
11.1 Basisklassen und davon abgeleitete Klassen
300
11.1.1 Das Beispiel
300
11.1.2 Angabe der abgeleiteten Klasse
302
11.1.3 Zugriff auf Komponenten der Basisklasse
303
11.1.4 Die Zugriffsangabe »protected«
304
11.2 Konstruktoren in abgeleiteten Klassen
305
11.3 Komponentenfunktionen überschreiben
308
11.4 Hierarchie von Klassen
312
11.5 Arten der Vererbung
316
11.5.1 Zugriffsmöglichkeiten
316
11.5.2 Klassen und Strukturen
318
11.6 Weitere Vererbung
319
11.7 Mehrfachvererbung
323
11.7.1 Komponentenfunktionen bei mehrfacher Vererbung
324
11.7.2 Konstruktoren
328
11.8 Mehrdeutigkeit bei mehrfacher Vererbung
334
11.9 Klassen in Klassen
336
11.10 Programmentwicklung
342
11.11 Zusammenfassung
343
11.12 Aufgaben
344
12 Zeiger
346
12.1 Adressen und Zeiger
346
12.1.1 Der Adreßoperator »&«
347
12.1.2 Zeigervariablen
349
12.1.3 Zugriff auf die Speicherstelle(n)
351
12.1.4 Zeiger auf void
353
12.2 Vektoren und Zeiger
354
12.3 Funktionen und Zeiger
357
12.3.1 Aufrufe mit einfachen Variablen
357
12.3.2 Vektoren als Aufrufparameter
359
12.3.3 Sortieren von Vektoren
362
12.4 Zeichenketten und Zeiger
366
12.4.1 Zeichenkettenkonstanten
366
12.4.2 Argumente von Funktionen
368
12.4.3 Zeichenketten kopieren
369
12.4.4 Bibliotheksfunktionen für Zeichenketten
371
12.4.5 Vektoren aus Zeigern
372
12.5 Die Speicherverwaltung
373
12.5.1 Der Operator »new«
374
12.5.2 Der Operator »delete«
375
12.5.3 »new« in Objekten
376
12.6 Zeiger auf Objekte
379
12.6.1 Das Beispiel
379
12.6.2 Zugriff auf die Komponenten
380
12.6.3 Weiterer Einsatz von »new«
381
12.6.4 Vektor aus Zeigern auf Objekte
383
12.7 Verkettete Listen
386
12.7.1 Kette aus Zeigern
386
12.7.2 Element hinzufügen
388
12.7.3 Ausgabe der Liste
390
12.7.4 Sich selbst enthaltende Klassen
391
12.7.5 Die Hauptfunktion
392
12.7.6 Erweiterungen
392
12.8 Zeiger auf Zeiger
393
12.8.1 Das Beispielprogramm
393
12.8.2 Die Sortierung
396
12.8.3 Zeiger auf Zeiger
397
12.8.4 Der Vergleich von Zeichenketten
398
12.8.5 Zeiger auf Zeiger auf Zeiger auf...
398
12.9 Fehlerbehebung bei Zeigern
399
12.10 Zusammenfassung
402
12.11 Aufgaben
403
13 Weitere Eigenschaften von C++
404
13.1 Virtuelle Funktionen
404
13.1.1 Einführung
404
13.1.2 Zugriff auf nicht virtuelle Komponentenfunktionen mit Zeigern
405
13.1.3 Zugriff auf virtuelle Komponentenfunktionen mit Zeigern
407
13.1.4 Späte Bindung
408
13.1.5 Rein virtuelle Funktionen
409
13.1.6 Eine erweiterte Klasse für Personen
410
13.1.7 Abstrakte Klassen
415
13.1.8 Virtuelle Basisklassen
415
13.2 Freundfunktionen
417
13.2.1 ... als Brücken
417
13.2.2 ... zur Überwindung von Grenzen
419
13.2.3 ... zur besseren Lesbarkeit
424
13.3 Freundklassen
428
13.4 Statische Funktionen
429
13.4.1 Das Beispiel
430
13.4.2 Zugriff auf statische Funktionen
431
13.4.3 Kennzeichnung der Objekte
432
13.4.4 Destruktoren
433
13.5 Zuweisung und Initialisierung durch Kopieren
433
13.5.1 Überlagerung des Zuweisungsoperators
434
13.5.2 Der Kopiekonstruktor
438
13.5.3 Erweiterung der Zeichenkettenklasse
443
13.6 Der this-Zeiger
448
13.6.1 Zugriff auf Komponentendaten
449
13.6.2 Rückgabe von Werten
450
13.6.3 Noch eine Erweiterung der Zeichenkettenklasse
452
13.7 Zusammenfassung
456
13.8 Aufgaben
457
14 Datenströme und Dateien
458
14.1 Datenströme
458
14.1.1 Die Klassenhierarchie
458
14.1.2 Klassen für Datenströme
459
14.2 Ein- und Ausgabe von Zeichenketten
460
14.2.1 Schreiben von Zeichenketten
460
14.2.2 Lesen von Zeichenketten
461
14.3 Ein- und Ausgabe von Zeichen
462
14.4 Ein- und Ausgabe von Objekten
463
14.4.1 Schreiben eines Objekts
463
14.4.2 Einlesen eines Objekts
464
14.4.3 Passende Datenstrukturen
465
14.5 Speichern und Lesen mehrerer Objekte
466
14.5.1 Das Beispiel
466
14.5.2 Die Klasse fstream
468
14.6 Dateizeiger
469
14.6.1 Festlegen einer absoluten Position
470
14.6.2 Angabe eines Abstands
470
14.6.3 Bestimmung der aktuellen Position
472
14.7 Komplexere Ein- und Ausgaben
473
14.7.1 Das Beispiel
473
14.7.2 Komponentenfunktionen
477
14.7.3 Dateien schließen
478
14.7.4 Ausblick
478
14.8 Fehlerbearbeitung
478
14.9 Einlese- und Einfügeoperator überladen
480
14.10 Zusammenfassung
484
14.11 Aufgaben
485
15 Weitere Möglichkeiten
486
15.1 Befehlszeilenargumente
486
15.2 Projekte aus mehreren Dateien
489
15.2.1 Klassenbibliotheken
489
15.2.2 Projektorganisation
490
15.2.3 Die #include-Anweisung
490
15.2.4 Mehrere Quelltextdateien
491
15.2.5 Borland C++-Builder
492
15.2.6 Visual C++ 6
493
15.2.7 Linux
494
15.3 Zusammenfassung
495
15.4 Aufgaben
495
16 Exceptions – Ausnahmebehandlung
496
16.1 try und catch
497
16.2 Auslösen einer Exception mit throw
497
16.3 Ein erstes Beispiel
498
16.4 Exceptions ohne Behandlung
500
16.5 Verschachtelung von Exceptions
502
16.6 Routine zum Beenden des Programms
504
16.7 Einschränkung auslösbarer Exceptions
506
16.8 Exception-Objekte
508
16.9 Initialisierung der Objekte
510
16.10 Mehrere Exceptions behandeln
514
16.11 Alle Exceptions behandeln
516
16.12 Zusammenfassung
518
16.13 Aufgaben
519
A Lösungen
520
A.1 Lösungen zu Kapitel 3
520
A.2 Lösungen zu Kapitel 4
521
A.3 Lösungen zu Kapitel 5
523
A.4 Lösungen zu Kapitel 6
525
A.5 Lösungen zu Kapitel 7
526
A.6 Lösungen zu Kapitel 8
528
A.7 Lösungen zu Kapitel 9
532
A.8 Lösungen zu Kapitel 10
535
A.9 Lösungen zu Kapitel 11
538
A.10 Lösungen zu Kapitel 12
543
A.11 Lösungen zu Kapitel 13
545
A.12 Lösungen zu Kapitel 14
548
A.13 Lösungen zu Kapitel 15
551
A.14 Lösungen zu Kapitel 16
553
Stichwortverzeichnis
556