;-_=_Scrolldown to the Underground_=_-; C++ Programmieren mit Stil http://kickme.to/tiger/ Inhalt Vorige Seite: Eine Ebene höher: Nächste Seite: 1 Vorbemerkungen Inhalt l 1 Vorbemerkungen m W as das Buch nicht ist m 1 .2 Aufbau des Buchs m 1 .3 Schreibweisen und Konventionen m 1 .4 Übungsbeispiele und Entwicklungssysteme m 1 .5 Die beigelegte CD l 2 Einführung m 2 .1 Die Programmiersprache C++ n 2 .1.1 Grundlagen von C++ n 2 .1.2 Die Entwicklung von C++ m 2 .2 Einfache C++-Programme n 2 .2.1 Das erste Programm: Hello world! n 2 .2.2 Variablen und Kontrollstrukturen n 2 .2.3 Funktionen l 3 Lexikalische Elemente von C++ m 3 .1 Sprachbeschreibung mit Grammatik m 3 .2 Bezeichner m 3 .3 Schlüsselwörter m 3 .4 Literale n 3 .4.1 Ganze Zahlen n 3 .4.2 Fließkommazahlen n 3 .4.3 Zeichen n 3 .4.4 Zeichenketten file:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (1 von 11) [10.09.2000 10:01:17] Inhalt n 3 .4.5 Wahrheitswerte m 3 .5 Operatoren und Begrenzer n 3 .5.1 Operatoren n 3 .5.2 Begrenzer n 3 .5.3 Alternative Operatoren und Begrenzer n 3 .5.4 Kommentare l 4 Einfache Deklarationen und Basisdatentypen m 4 .1 Die Begriffe Definition und Deklaration m 4 .2 Basisdatentypen n 4 .2.1 Der Datentyp bool n 4 .2.2 Die Datentypen char und wchar_t n 4 .2.3 Die int-Datentypen n 4 .2.4 Fließkommadatentypen n 4 .2.5 Der Datentyp void m 4 .3 Aufzählungstypen m 4 .4 Deklaration von Konstanten l 5 Ausdrücke m 5 .1 Auswertungsreihenfolge m 5 .2 LValues und RValues m 5 .3 Primäre Ausdrücke m 5 .4 Postfix-Ausdrücke m 5 .5 Unäre Ausdrücke m 5 .6 Andere Ausdrücke l 6 Anweisungen m 6 .1 Ausdrucksanweisung m 6 .2 Sprungmarken m 6 .3 Blockanweisungen m 6 .4 Deklaration m 6 .5 Selektion n D ie if else-Anweisung n 6 .5.2 Die switch-Anweisung m 6 .6 Iteration n 6 .6.1 Die while-Anweisung file:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (2 von 11) [10.09.2000 10:01:17] Inhalt n D ie do while-Anweisung n 6 .6.3 Die for-Anweisung m 6 .7 Sprunganweisungen n 6 .7.1 Die break-Anweisung n 6 .7.2 Die continue-Anweisung n 6 .7.3 Die return-Anweisung n 6 .7.4 Die goto-Anweisung l 7 Funktionen m 7 .1 Einführung m 7 .2 Deklaration und Definition von Funktionen m 7 .3 Funktionsaufruf und Parameterübergabe m 7 .4 Spezielle Funktionen n 7 .4.1 Prozeduren n 7 .4.2 Operator-Funktionen m 7 .5 inline-Funktionen m 7 .6 Vorbelegte Parameter m 7 .7 Überladen von Funktionen n 7 .7.1 Aufruf von überladenen Funktionen n 7 .7.2 Überladen versus vorbelegte Parameter m 7 .8 Rekursion l 8 Höhere Datentypen und strukturierte Datentypen m 8 .1 Referenzen m 8 .2 Grundlegendes zu Zeigern n 8 .2.1 Deklaration von Zeigern n 8 .2.2 Adreßbildung n 8 .2.3 Dereferenzierung von Zeigerwerten n 8 .2.4 Anlegen von dynamischen Objekten n 8 .2.5 Zerstören von dynamisch angelegten Speicherobjekten n 8 .2.6 Zeigerkonstanten n 8 .2.7 Spezielle Zeigertypen n v oid-Zeiger n Z eiger auf Funktionen m 8 .3 Vektoren file:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (3 von 11) [10.09.2000 10:01:17] Inhalt n 8 .3.1 Vektoren und Zeiger n 8 .3.2 Zeigerarithmetik n 8 .3.3 Vektoren als Parameter m 8 .4 Zeichenketten m 8 .5 Parameterübergabe mit Zeigern und Referenzen n 8 .5.1 Call by Value und Call by Reference n 8 .5.2 Gegenüberstellung der zwei Arten der Parameterübergabe m 8 .6 Strukturierte Datentypen: Klassen n 8 .6.1 Definition von Klassen n 8 .6.2 Die Elementoperatoren . und -> l 9 Gültigkeitsbereiche, Deklarationen und Typumwandlungen m 9 .1 Gültigkeitsbereiche, Namensräume und Sichtbarkeit n 9 .1.1 Gültigkeitsbereiche n 9 .1.2 Namensräume n D eklaration und Verwendung von Namensräumen n N amenlose Namensräume m 9 .2 Deklarationen n 9 .2.1 Speicherklassenattribute n S peicherklasse auto n S peicherklasse register n S peicherklasse static n S peicherklasse extern n S peicherklasse mutable n D er Zusammenhang zwischen Speicherklasse, Lebensdauer und Gültigkeit n 9 .2.2 Typ-Qualifikatoren n 9 .2.3 Funktionsattribute n 9 .2.4 typedef m 9 .3 Initialisierung m 9 .4 Typumwandlungen n 9 .4.1 Standard-Typumwandlung n L Value-RValue-Typumwandlungen n V ektor-Zeiger-Typumwandlungen n F unktion-Zeiger-Typumwandlungen file:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (4 von 11) [10.09.2000 10:01:17] Inhalt n Q ualifikations-Typumwandlungen n In tegral- und Gleitkomma-Promotionen n In tegral- und Gleitkomma-Typumwandlungen n G leitkomma-Integral-Typumwandlungen n Z eiger-Typumwandlungen n B asisklassen-Typumwandlungen n B ool-Typumwandlungen n 9 .4.2 Explizite Typumwandlung n T ypumwandlung im C-Stil und im Funktionsstil n N eue Cast-Operatoren l 1 0 Module und Datenkapseln m 1 0.1 Motivation m 1 0.2 Vom Modul zur Datenkapsel m 1 0.3 Module und Datenkapseln in C++ n 1 0.3.1 Die Schnittstellendatei n 1 0.3.2 Die Implementierungsdatei n 1 0.3.3 Modul-Klienten n 1 0.3.4 Einige Kommentare zu Stack m 1 0.4 Resümee l 1 1 Das Klassenkonzept m 1 1.1 Motivation n 1 1.1.1 Klassen als Mittel zur Abstraktion n 1 1.1.2 Klassen und das Geheimnisprinzip m 1 1.2 Element-Funktionen n 1 1.2.1 inline-Element-Funktionen n 1 1.2.2 const-Element-Funktionen m 1 1.3 this-Zeiger m 1 1.4 Der Zugriffsschutz bei Klassen n 1 1.4.1 Zugriffsschutz mit public, protected und private n 1 1.4.2 friend-Funktionen und -Klassen m 1 1.5 static-Klassen-Elemente m 1 1.6 Geschachtelte Klassen m 1 1.7 Spezielle Element-Funktionen und Operatoren file:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (5 von 11) [10.09.2000 10:01:17] Inhalt n 1 1.7.1 Konstruktoren n O bjekt-Initialisierung mittels Initialisierungsliste n Ü berladen von Konstruktoren n D er Copy-Konstruktor n 1 1.7.2 Destruktoren n 1 1.7.3 Überladen von Operatoren n A llgemeines zum Überladen von Operatoren n Im plementierung von speziellen Operatoren n D er Indexoperator [] n D er Operator () n D ie Operatoren new, delete n D er Zuweisungsoperator = n D ie Ein-/Ausgabeoperatoren >> und << n 1 1.7.4 Automatisch generierte Element-Funktionen und kanonische Form von Klassen n 1 1.7.5 Benutzerdefinierte Typumwandlungen n T ypumwandlung mit Konstruktoren n T ypumwandlungen mit Umwandlungsoperatoren m 1 1.8 Weiterführende Themen n 1 1.8.1 Zeiger auf Klassen-Elemente n 1 1.8.2 Varianten n 1 1.8.3 Bitfelder m 1 1.9 Beispiele und Übungen n 1 1.9.1 Klasse Date n T hemenbereich n K omplexität n A ufgabenstellung n 1 1.9.2 Klasse Counter n T hemenbereiche n K omplexität n A ufgabenstellung n 1 1.9.3 Gültigkeitsbereich, Sichtbarkeit und Lebensdauer n T hemenbereiche file:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (6 von 11) [10.09.2000 10:01:17] Inhalt n K omplexität n A ufgabenstellung n 1 1.9.4 Klasse Calculator n T hemenbereiche n K omplexität n A ufgabenstellung n H intergrundwissen n 1 1.9.5 Klasse List n T hemenbereiche n K omplexität n A ufgabenstellung n 1 1.9.6 Klasse Rational n T hemenbereiche n K omplexität n A ufgabenstellung l 1 2 Templates m 1 2.1 Motivation m 1 2.2 Funktions-Templates n 1 2.2.1 Ausprägung von Funktions-Templates n 1 2.2.2 Überladen von Funktions-Templates m 1 2.3 Klassen-Templates n 1 2.3.1 Definition von Klassen-Templates n 1 2.3.2 Ausprägung von Klassen-Templates n 1 2.3.3 Geschachtelte Template-Klassen und friend n 1 2.3.4 Explizite Ausprägung und Spezialisierung n 1 2.3.5 Template-Typen m 1 2.4 Element-Templates m 1 2.5 Beispiele und Übungen n 1 2.5.1 Funktions-Template binSearch n T hemenbereich n K omplexität n A ufgabenstellung n H intergundwissen file:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (7 von 11) [10.09.2000 10:01:17] Inhalt n 1 2.5.2 List-Template n T hemenbereich n K omplexität n A ufgabenstellung n H intergrundwissen n 1 2.5.3 Tree-Template n T hemenbereich n K omplexität n A ufgabenstellung n H intergrundwissen l 1 3 Vererbung m 1 3.1 Einführung n 1 3.1.1 Was heißt Vererbung? n 1 3.1.2 Begriffe im Zusammenhang mit Vererbung m 1 3.2 Ableiten einer Klasse m 1 3.3 Die Is-A-Beziehung m 1 3.4 Vererbung und Gültigkeitsbereiche m 1 3.5 Element-Funktionen bei abgeleiteten Klassen n 1 3.5.1 Konstruktoren n 1 3.5.2 Copy-Konstruktor n 1 3.5.3 Destruktor n 1 3.5.4 Zuweisungsoperator n 1 3.5.5 Überschreiben von ererbten Methoden m 1 3.6 Spezifikation von Basisklassen m 1 3.7 Beispiele und Übungen n 1 3.7.1 Klasse Word n T hemenbereich n A ufgabenstellung l 1 4 Polymorphismus und spezielle Aspekte der Vererbung m 1 4.1 Polymorphismus m 1 4.2 Virtuelle Element-Funktionen n 1 4.2.1 Deklaration von virtuellen Element-Funktionen n 1 4.2.2 Aufruf von virtuellen Element-Funktionen file:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (8 von 11) [10.09.2000 10:01:17] Inhalt n 1 4.2.3 Virtuelle Destruktoren n 1 4.2.4 Überschreiben von nicht virtuellen Element-Funktionen n 1 4.2.5 Is-A-Vererbung als Programming by Contract n 1 4.2.6 Repräsentation polymorpher Objekte im Speicher m 1 4.3 Abstrakte Basisklassen und rein virtuelle Element-Funktionen m 1 4.4 Mehrfachvererbung m 1 4.5 Virtuelle Basisklassen m 1 4.6 Laufzeit-Typinformation n 1 4.6.1 Typumwandlung mit dynamic_cast n 1 4.6.2 Der typeid-Operator n 1 4.6.3 Erweiterung und Einsatz der Typinformation m 1 4.7 Beispiele und Übungen n 1 4.7.1 Klassenhierarchie Animals n T hemenbereich n K omplexität n A ufgabenstellung n 1 4.7.2 CellWar n T hemenbereich n K omplexität n A ufgabenstellung n 1 4.7.3 Klassenhierarchie Maze n T hemenbereich n K omplexität n A ufgabenstellung n 1 4.7.4 Klassenhierarchie Kellerbar n T hemenbereich n K omplexität n A ufgabenstellung l 1 5 Ausnahmebehandlung m 1 5.1 Motivation m 1 5.2 Ausnahmebehandlung in C++ m 1 5.3 Auslösen von Ausnahmen und Ausnahme-Objekte m 1 5.4 Ausnahme-Handler file:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (9 von 11) [10.09.2000 10:01:17]