lehrerbibliothek.deDatenschutzerklärung
C++ Primer
C++ Primer




Stanley B. Lippman, Jose Lajoie

mitp-Verlag
EAN: 9783826608117 (ISBN: 3-8266-0811-9)
1 Seiten, paperback, 18 x 24cm, 2002

EUR 59,95
alle Angaben ohne Gewähr

Umschlagtext
Der C++ Primer bietet eine umfassende elementare Darstellung des internationalen C++-Standards.

Alle Aspekte der Programmierung mit C++ werden im Kontext einer bestimmten Problemlösung oder Programmieraufgabe dargestellt. Zahlreiche ausführliche praxisnahe Beispiele dienen der Einführung verschiedener Spracheigenschaften und zeigen zugleich im Kontext auf, wo und wie mit den jeweiligen Eigenschaften praktische Probleme gelöst werden können. Hierbei steht insbesondere die Umsetzung grundlegender C++-Konzepte im Vordergrund. Die Autoren sind bekannte Kapazitäten der C++-Gemeinde: Stan Lippman war eines der ersten Mitglieder des

Teams von Bell Laboratories, hat dort mit Bjarne Stroustrup zusammengearbeitet und beschäftigt sich seit 1984 mit C++. Josee Lajoie ist seit 1990 Mitglied des Standardisierungskomitees.



Aus dem Inhalt:

• Datentypen, Ausdrücke, vordefinierte Operatoren, Anweisungen

• Containertypen der C++-Standardbibliothek

• Prozedurale Programmierung: Funktionsmechanismus, Überladen von Funktionen und Funktions-Templates

• Exception-Handling und die generischen Algorithmen mit Programmbeispielen

• Objektbasierte Programmierung:

Klassen, Klassen-lnitialisierung und Klassen-Templates

• Objektorientierte Programmierung:

Klassenvererbung, mehrfache und virtuelle Vererbung, RTTI

• Die iostream-Bibliothek



Der Stoff wird so dargeboten, dass das Buch auch als Nachschlagewerk dienen kann.



Die Programmbeispiele stehen kostenlos im Web zur Verfügung!
Inhaltsverzeichnis
Vorwort 11
Aufbau des Buches 12
Die Zukunft von C++ 15
Anmerkungen zu den Listings 15
Danksagungen 16
Bibliografie 17

Teil I: C++ im Überblick 19

Kapitel 1: Einführung 21

1.1 Problemlösung 21
1.2 Das C++-Programm
1.3 Präprozessordirektiven 28
l .4 Kommentare 32
l .5 Ein- und Ausgabe - Ein kurzer Überblick 34

Kapitel 2: Eine C++-Tour 39
2.1 Die vordefinierten Array-Datentypen 39
2.2 Dynamische Speicherzuweisung und Pointer 42
2.3 Eine objektbasierte Implementierung 45
2.4 Objektorientiertes Design 55
2.5 Generisches Design 64
2.6 Programmentwicklung mit Exceptions 70
2.7 Gleiche Bezeichnungen 74
2.8 Das Standard-Array ist ein Vektor 79

Teil II: Die Sprachgrundlagen 85

Kapitel 3: Die C++-Datentypen 87

3.1 Literalkonstanten 87
3.2 Variablen 90
3.3 Pointer-Typen 99
3.4 String-Typen 103
3.5 Der Qualifier const 111
3.6 Referenztypen 114
3.7 Derbool-Typ 119
3.8 enum-Typen 120
3.9 Array-Typen 122
3.10 Der Containertyp vector 130
3.11 Komplexe Zahlentypen 133
3.12 typedef-Namen 134
3.13 Der Qualifier volatile 135
3.14 DerTyppair 136
3.15 Klassentypen 137

Kapitel 4: Ausdrücke 149
4.1 Was ist ein Ausdruck? 149
4.2 Arithmetische Operatoren 151
4.3 Relationale, logische und Vergleichsoperatoren 153
4.4 Zuweisungsoperatoren 156
4.5 Inkrement- und Dekrementoperatoren 160
4.6 Operationen mit komplexen Zahlen 162
4.7 Der Bedingungsoperator 165
4.8 Der Operator sizeof 166
4.9 Die Operatoren new und delete 168
4.10 Der Kommaoperator 170
4.11 Die bitweisen Operatoren 170
4.12 Bitset-Operationen 173
4.13 Rangfolge der Operatoren 177
4.14 Typumwandlungen 179
4.15 Ein Beispiel für eine Stack-Klasse 188

Kapitel 5: Anweisungen 193
5.1 Einfache und zusammengesetzte Anweisungen 193
5.2 Deklarationen 194
5.3 Die if-Anweisung 197
5.4 Die switch-Anweisung 205
5.5 Die for-Schleife 213
5.6 Die while-Schleife 217
5.7 Die do-while-Schleife 219
5.8 Die break-Anweisung 220
5.9 Die continue-Anweisung 222
5.10 Die goto-Anweisung 222
5.11 Beispiel für eine verknüpfte Liste 224

Kapitel 6: Abstrakte Containertypen 249
6.1 Das Textabfragesystem 250
6.2 Vektor oder Liste? 253
6.3 Wie ein Vektor wächst 254
6.4 Definieren eines Sequenz-Containers 257
6.5 Iteratoren 261
6.6 Sequenz-Containeroperationen 265
6.7 Textzeilen speichern 270
6.8 Eine Zeichenfolge suchen 273
6.9 Die Behandlung der Zeichensetzung 279
6.10 Varianten eines Strings 282
6.11 Weitere String-Funktionen 285
6.12 Eine Map für Positionen im Text 291
6.13 Ein Wortausschluss-Set einrichten 301
6.14 Das vollständige Programm 304
6.15 Multimap/Multiset 314
6.16 Stack 316
6.17 Warteschlange und Prioritätswarteschlange 318
6.18 Überarbeitung der iStack-Klasse 319

Teil III: Prozedural-basierte Programmierung 323

Kapitel 7: Funktionen 325

7.1 Übersicht 325
7.2 Funktionsprototypen 328
7.3 Argumentübergabe 331
7.4 Wertrückgabe 348
7.5 Rekursion 353
7.6 Inline-Funktionen 354
7.7 Linker-Direktiven: extern "C" 355
7.8 mainQ: Optionen in der Befehlszeile 358
7.9 Pointer auf Funktionen 369

Kapitel 8: Gültigkeitsbereich und Lebensdauer 381
8.1 Gültigkeitsbereich 381
8.2 Globale Objekte und Funktionen 387
8.3 Lokale Objekte 393
8.4 Dynamisch allokierte Objekte 396
8.5 Namespace-Definitionen 408
8.6 Namespace-Members verwenden 421

Kapitel 9: Überladene Funktionen 431
9. l Überladene Funktionsdeklarationen 431
9.2 Die drei Schritte beim Auflösen überladener Funktionen 443
9.3 Typumwandlungen für Argumente 445
9.4 Details zur Auflösung überladener Funktionen 459

Kapitel 10: Funktions-Templates 473
10.1 Definition eines Funktions-Templates 473
10.2 Instanzen von Funktions-Templates 480
10.3 Argumentdeduktion 483
10.4 Explizite Template-Argumente 487
10.5 Template-Kompilationsmodelle 490
10.6 Explizite Template-Spezialisierungen 495
10.7 Funktions-Templates überladen 500
10.8 Auflösung überladener Instanzen 503
10.9 Namensauflösung in Template-Definitionen 510
10.10 Namespaces und Funktions-Templates 516
10.11 Funktions-Templates - Ein Beispiel 520

Kapitel 11: Exception-Handling 525
11.1 Eine Exception auslösen 525
11.2 Dertry-Block 528
11.3 Eine Exception abfangen 532
11.4 Exception-Spezifikationen 541
11.5 Exceptions und Programm-Design 544

Kapitel 12: Die generischen Algorithmen 547
12.1 Überblick 547
12.2 Verwendung der generischen Algorithmen 551
12.3 Funktionsobjekte 561
12.4 const-Iteratoren 569
12.5 Die generischen Algorithmen 576
12.6 Wann generische Algorithmen nicht benutzt werden 580

Teil IV: Objektbasierte Programmierung 585

Kapitel 13: Klassen 587

13.1 Klassendefinition 587
13.2 Klassenobjekte 594
13.3 Member-Funktionen 597
13.4 Der implizite this-Pointer 608
13.5 Statische Klassen-Member 613
13.6 Pointer auf Klassen-Member 620
13.7 Union: Eine Platz sparende Klasse 629
13.8 Bitfelder: Platz sparende Member 634
13.9 Gültigkeitsbereiche von Klassen 635
13.10 Verschachtelte Klassen 642
13.11 Klassen als Namespace-Member 652
13.12 Lokale Klassen 656

Kapitel 14: Klasseninitialisierung, Zuweisung und Zerstörung 659
14.1 Initialisierung einer Klasse 659
14.2 Der Klassenkonstruktor 661
14.3 Der Klassendestruktor 671
14.4 Arrays und Vektoren mit Klassenobjekten 677
14.5 Die Member-Initialisierungsliste 683
14.6 Member-Initialisierung 690
14.7 Member-Zuweisung 695
14.8 Überlegungen zur Effizienz 698

Kapitel 15: Überladene Operatoren und benutzerdefinierte Umwandlungen 703
15.1 Das Überladen von Operatoren 703
15.2 Freunde 712
15.3 DerOperator= 716
15.4 Der Operator [ ] 718
15.5 Der Operator () 719
15.6 Der Operator -> 720
15.7 Die Operatoren ++ und -- 723
15.8 Die Operatoren new und delete 727
15.9 Benutzerdefinierte Umwandlungen 735
15.10 Eine Umwandlung auswählen 745
15.11 Auflösung überladener Member-Funktionen 757
15.12 Auflösung überladener Operatoren 762

Kapitel 16: Klassen-Templates 771
16.1 Definition eines Klassen-Templates 771
16.2 Klassen-Template-Instanz 779
16.3 Member-Funktionen von Klassen-Templates 788
16.4 friend-Deklarationen in Klassen-Templates 792
16.5 Statische Member-Variablen von Klassen-Templates 797
16.6 Verschachtelte Klassen-Template-Typen 799
16.7 Member-Templates 802
16.8 Klassen-Template und Kompilationsmodell 806
16.9 Klassen-Template-Spezialisierungen 812
16.10 Partielle Spezialisierungen von Klassen-Templates 816
16.11 Namensauflösung bei Klassen-Templates 818
16.12 Namespaces und Klassen-Templates 821
16.13 Ein Array-Klassen-Template 823

Teil V: Objektorientierte Programmierung 831

Kapitel 17: Klassenvererbung und Subtypen 833

17.1 Definition einer Klassenhierarchie 836
17.2 Identifikation der Member der Hierarchie 843
17.3 Zugriff auf Member der Basisklasse 852
17.4 Einrichten von Basisklassen und abgeleiteten Klassen 860
17.5 Virtuelle Funktionen von Basisklassen und abgeleiteten Klassen 870
17.6 Member-Initialisierung und Zuweisung 893
17.7 Eine UserQuery-Managerklasse 898
17.8 Das vollständige Programm 906

Kapitel 18: Mehrfache und virtuelle Vererbung 913
18.1 Voraussetzungen 913
18.2 Mehrfache Vererbung 917
18.3 Öffentliche, private und geschützte Vererbung 924
18.4 Klassengültigkeitsbereich und Vererbung 931
18.5 Virtuelle Vererbung 940
18.6 Ein Beispiel für mehrfache virtuelle Vererbung 951

Kapitel 19: Vererbung in C++ 965
19.1 RTTI 965
19.2 Exceptions und Vererbung 976
19.3 Auflösung von Überladungen und Vererbung 993

Kapitel 20: Die iostream-Bibliothek 1003
20.1 Der Ausgabeoperator << 1007
20.2 Eingabe 1012
20.3 Zusätzliche Ein- und Ausgabeoperatoren 1023
20.4 Überladen des Ausgabeoperators << 1029
20.5 Überladen des Eingabeoperators >> 1034
20.6 Dateiein- und -ausgabe 1037
20.7 Fehlerzustände 1046
20.8 String-Streams 1048
20.9 Formatzustand 1051
20.10 Eine stark typorientierte Bibliothek 1059

Anhang A: Die genetischen Algorithmen 1061

Stichwortverzeichnis 1139