Up:
Programmieren in C++
Previous:
Index
Inhalt
Übersicht
C
++
ist nicht C: Geschichte, Sprachkonzepte und ein Beispiel
Das erste (und wichtigste) C
++
-Beispiel
Geschichte
Sprachkonzepte
Programmierstil Prozedurales Programmieren
Programmierstil Modulares Programmieren
Programmierstil Datenabstraktion
Objektorientierte Programmierung
Das erste C
++
-Projekt
fstack
: Ein einfacher Keller
Die Klasse
fraction
fcalc.cc
: Das Hauptprogramm
Ein Makefile für den Bruch-Rechner
Klassen
Klassendefinition
Zugriffskontrolle
Elementfunktionen (``Member Functions``)
Inline-Elementfunktionen
Der
this
-Zeiger
Konstante Elementfunktionen
Statische Klassenelemente
Freunde
Konstruktoren
Primitive Datentypen
Konstruktoren für Klassen
Der Default-Konstruktor
Der Copy-Konstruktor
Initialisierung
Wertzuweisung
Destruktoren
Vordefinierte Klassen: Die C
++
I/O-Bibliothek
Stream-Ausgabe
Stream-Eingabe
Ein/Ausgabe von Dateien
Ein/Ausgabe von und in Strings
Grundtypen und abgeleitete Typen
Die Grundtypen von C
++
Implizite Typumwandlung
Explizite Typumwandlung
Benutzer-definierte Umwandlung
Konstanten
Integer-Konstanten
Fließkomma-Konstanten
Textzeichen-Konstanten
Strings
Benannte Konstanten
Abgeleitete Typen
Der Typ
void
Zeiger-Typen
Arrays
Zeiger und Arrays
Referenzen
Funktionen
Zeiger auf Funktionen
Sonstiges
Bitfelder
Wichtige Unterschiede zu ANSI C
Anweisungen und Ausdrücke
Anweisungen
Benannte Anweisung (Labeled Statement)
Ausdrucksanweisung (Expression Statement)
Blöcke (Compound Statements)
Auswahlanweisung (Selection Statement)
Schleifen (Iteration Statements)
Unbedingte Sprünge (Jump Statements)
Deklarations-Anweisung (Declaration Statement)
Ausdrücke
Übersicht über die Operatoren
Einige ausgewählte Operatoren
Überladen von Funktionen und Operatoren
Überladen von Funktionen
Überladen von Operatoren
Ein vollständiges Beispiel
Überladen der Wertzuweisung
Überladen der Indizierung
Überladen des Elementzugriffs
Überladen des Funktionsaufrufs
Überladen von new und delete
Warnung
Schablonen
Funktionsschablonen
Klassenschablonen
Klassen-Hierarchien und Vererbung
Ein erstes Beispiel
Zugriff auf Basisklassen-Elemente
Zugriff auf Basisklassen
Konstruktion und Destruktion
Initialisierung durch Kopie
Typanpassung
Benutzer-definierte Typfelder
Virtuelle Funktionen
Implementierung mit Funktionstabellen
Noch ein Beispiel
Regeln für die Benutzung von virtuellen Funktionen
Virtuelle Destruktoren
Abstrakte Basisklassen
Mehrfache Vererbung
Virtuelle Basisklassen
Mehrfache Vererbung und Typumwandlung
50 Ways to Improve Your Programs
const
und
inline
statt
define
iostream.h
statt
stdio.h
new
und
delete
statt
malloc
und
free
C
++
Kommentare benutzen
Form der
new
- und
delete
-Aufrufe
delete
für Pointer-Klassenelemente aufrufen
Ergebniswert von
new
testen
Überladen von
new
Das globale
new
nicht überdecken
Selbstdefinierte
new
/
delete
-Operatoren
Copy-Konstruktor und
=
Operator
Initialisierung durch Wertzuweisung vermeiden
Reihenfolge der Initialisierung
Virtuelle Destruktoren
Rückgabewert des
=
Operators
Member-Zuweisung im
=
Operator
Selbstzuweisung abtesten
Minimale Klassenschnittstellen
Element-, Freund- oder globale Funktionen
Vermeide öffenliche Datenelemente
const
benutzen
Übergabe und Rückgabe per Referenz
Keine Referenzrückgabe für neue Objekte
Überladen
Default-Parameter
Überladen von Pointer und numerischen Typen vermeiden
Vorsicht bei potentieller Mehrdeutigkeit
Compiler-generierte Elementfunktionen
Partitionierung des globalen Namensraumes
Konstante Elementfunktionen
Elementfunktionen, die Pointer auf weniger zugreifbare Elemente liefern
Keine Referenzen auf lokale Objekte zurückgeben
Ganzahlige Klassenkonstanten
Benutze
inline
mit Bedacht
Abhängigkeiten zwischen Programm-Moduln
Öffentliche Vererbung modelliert ``istein''
Vererbung von Schnittstelle und/oder Implementierung
Eine geerbte nicht-virtuelle Funktion nicht überschreiben
Geerbte Default-Parameterwerte nie ändern
Vermeide ``downcasts''
Modelliere ``hatein'' durch Elemente von Klassentyp
Private Vererbung
Templates und Vererbung
Mehrfachvererbung
Verstehen was man tut
Compiler-generierte Funktionen
Laufzeit-Tests
Globale Objekte vor der Benutzung initialisieren
Compiler-Warnungen beachten
Geplante Spracherweiterungen im Auge behalten
Das Referenz-Manual lesen
Java: Überblick und Vergleich
Ursprünge
Was ist interessant an Java?
Java Programme und Java Applets
Unterschiede zwischen Java und C/C++
Programmstruktur
Kommandozeilen-Argumente
Keine globalen Variablen und Funktionen
Kein Präprozessor
Unicode-Buchstaben
Grundtypen
Referenz-Semantik
Java hat keine Pointer
null
: Keine Referenz
Objekt-Erzeugung
Garbage Collection
Die
synchronized
Anweisung
Ausnahmebehandlung (exception handling)
Keine Structs, Unions, Aufzählungen
Form der Klassendefinition
Vererbung
Abstrakte Klassen
Interfaces
C
++
-Konstrukte, die wir in Java nicht finden
Application Programming Interfaces
Java-Information auf dem Netz
Index
Up:
Programmieren in C++
Previous:
Index
Peter Pfahler, 1997