C++ lernen und verstehen. Die Sprache und ihr Strukturen

C++ lernen und verstehen. Die Sprache und ihr Strukturen

von: Wolfgang Soltendick

C & L Computer- und Literaturverlag GmbH, 2003

ISBN: 9783936546019 , 599 Seiten

Format: PDF, OL

Kopierschutz: DRM

Windows PC,Mac OSX Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 10,00 EUR

Mehr zum Inhalt

C++ lernen und verstehen. Die Sprache und ihr Strukturen


 

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