(ebook-german)c programmieren mit stil
TRANSCRIPT
-
7/28/2019 (eBook-German)C Programmieren Mit Stil
1/621
C++ Programmieren mit Sti
http://kickme.to/tiger/
http://kickme.to/tiger/http://kickme.to/tiger/ -
7/28/2019 (eBook-German)C Programmieren Mit Stil
2/621
orige Seite:Eine Ebene hher:Nchste Seite:1 Vorbemerkungen
nhalt
1 Vorbemerkungen
Was das Buch nicht istr
1.2 Aufbau des Buchsr
1.3 Schreibweisen und Konventionenr
1.4 bungsbeispiele und Entwicklungssystemer
1.5 Die beigelegte CDr
q
2 Einfhrung
2.1 Die Programmiersprache C++
2.1.1 Grundlagen von C++s
2.1.2 Die Entwicklung von C++s
r
2.2 Einfache C++-Programme2.2.1 Das erste Programm: Hello world!s
2.2.2 Variablen und Kontrollstrukturens
2.2.3 Funktionens
r
q
3 Lexikalische Elemente von C++
3.1 Sprachbeschreibung mit Grammatikr
3.2 Bezeichnerr
3.3 Schlsselwrterr
3.4 Literale
3.4.1 Ganze Zahlens
3.4.2 Fliekommazahlens
3.4.3 Zeichens
3.4.4 Zeichenkettens
r
q
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (1 von 11) [10.09.2000 10:01:17]
http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node2.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node2.htmhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node2.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node2.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node2.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node2.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node2.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
3/621
3.4.5 Wahrheitswertes
3.5 Operatoren und Begrenzer
3.5.1 Operatorens
3.5.2 Begrenzers
3.5.3 Alternative Operatoren und Begrenzers
3.5.4 Kommentares
r
4 Einfache Deklarationen und Basisdatentypen
4.1 Die Begriffe Definition und Deklarationr
4.2 Basisdatentypen
4.2.1 Der Datentyp bools
4.2.2 Die Datentypen char und wchar_ts
4.2.3 Die int-Datentypens
4.2.4 Fliekommadatentypens
4.2.5 Der Datentyp voids
r
4.3 Aufzhlungstypenr
4.4 Deklaration von Konstantenr
q
5 Ausdrcke
5.1 Auswertungsreihenfolger
5.2LValues undRValuesr
5.3 Primre Ausdrcker
5.4 Postfix-Ausdrcker
5.5 Unre Ausdrcker
5.6 Andere Ausdrcker
q
6 Anweisungen
6.1 Ausdrucksanweisungr
6.2 Sprungmarkenr
6.3 Blockanweisungenr
6.4 Deklarationr
6.5 Selektion
Die ifelse-Anweisungs
6.5.2 Die switch-Anweisungs
r
6.6 Iteration
6.6.1 Die while-Anweisungs
r
q
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (2 von 11) [10.09.2000 10:01:17]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
4/621
Die dowhile-Anweisungs
6.6.3 Die for-Anweisungs
6.7 Sprunganweisungen
6.7.1 Die break-Anweisungs
6.7.2 Die continue-Anweisungs
6.7.3 Die return-Anweisungs
6.7.4 Die goto-Anweisungs
r
7 Funktionen
7.1 Einfhrungr
7.2 Deklaration und Definition von Funktionenr
7.3 Funktionsaufruf und Parameterbergaber
7.4 Spezielle Funktionen
7.4.1 Prozedurens
7.4.2 Operator-Funktionens
r
7.5 inline-Funktionenr
7.6 Vorbelegte Parameterr
7.7 berladen von Funktionen
7.7.1 Aufruf von berladenen Funktionens
7.7.2 berladen versus vorbelegte Parameters
r
7.8 Rekursionr
q
8 Hhere Datentypen und strukturierte Datentypen
8.1 Referenzenr
8.2 Grundlegendes zu Zeigern
8.2.1 Deklaration von Zeigerns
8.2.2 Adrebildungs
8.2.3 Dereferenzierung von Zeigerwertens
8.2.4 Anlegen von dynamischen Objektens
8.2.5 Zerstren von dynamisch angelegten Speicherobjektens
8.2.6 Zeigerkonstantens
8.2.7 Spezielle Zeigertypen
void-Zeigers
Zeiger auf Funktionens
s
r
8.3 Vektorenr
q
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (3 von 11) [10.09.2000 10:01:17]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
5/621
8.3.1 Vektoren und Zeigers
8.3.2 Zeigerarithmetiks
8.3.3 Vektoren als Parameters
8.4 Zeichenkettenr
8.5 Parameterbergabe mit Zeigern und Referenzen
8.5.1 Call by Value und Call by References
8.5.2 Gegenberstellung der zwei Arten der Parameterbergabes
r
8.6 Strukturierte Datentypen: Klassen
8.6.1 Definition von Klassens
8.6.2 Die Elementoperatoren . und ->s
r
9 Gltigkeitsbereiche, Deklarationen und Typumwandlungen
9.1 Gltigkeitsbereiche, Namensrume und Sichtbarkeit
9.1.1 Gltigkeitsbereiches
9.1.2 Namensrume
Deklaration und Verwendung von Namensrumens
Namenlose Namensrumes
s
r
9.2 Deklarationen
9.2.1 Speicherklassenattribute
Speicherklasse autos
Speicherklasse registers
Speicherklasse statics
Speicherklasse externs
Speicherklasse mutables
Der Zusammenhang zwischen Speicherklasse, Lebensdauer und Gltigkeits
s
9.2.2 Typ-Qualifikatorens
9.2.3 Funktionsattributes
9.2.4 typedefs
r
9.3 Initialisierungr
9.4 Typumwandlungen
9.4.1 Standard-Typumwandlung
LValue-RValue-Typumwandlungens
Vektor-Zeiger-Typumwandlungens
Funktion-Zeiger-Typumwandlungens
s
r
q
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (4 von 11) [10.09.2000 10:01:17]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
6/621
Qualifikations-Typumwandlungens
Integral- und Gleitkomma-Promotionens
Integral- und Gleitkomma-Typumwandlungens
Gleitkomma-Integral-Typumwandlungens
Zeiger-Typumwandlungens
Basisklassen-Typumwandlungens
Bool-Typumwandlungens
9.4.2 Explizite Typumwandlung
Typumwandlung im C-Stil und im Funktionsstils
Neue Cast-Operatorens
s
10 Module und Datenkapseln
10.1 Motivationr
10.2 Vom Modul zur Datenkapselr
10.3 Module und Datenkapseln in C++
10.3.1 Die Schnittstellendateis
10.3.2 Die Implementierungsdateis
10.3.3 Modul-Klientens
10.3.4 Einige Kommentare zu Stacks
r
10.4 Resmeer
q
11 Das Klassenkonzept
11.1 Motivation
11.1.1 Klassen als Mittel zur Abstraktions
11.1.2 Klassen und das Geheimnisprinzips
r
11.2 Element-Funktionen
11.2.1 inline-Element-Funktionens
11.2.2 const-Element-Funktionens
r
11.3 this-Zeigerr
11.4 Der Zugriffsschutz bei Klassen
11.4.1 Zugriffsschutz mit public, protected und privates
11.4.2 friend-Funktionen und -Klassens
r
11.5 static-Klassen-Elementer
11.6 Geschachtelte Klassenr
11.7 Spezielle Element-Funktionen und Operatorenr
q
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (5 von 11) [10.09.2000 10:01:17]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
7/621
11.7.1 Konstruktoren
Objekt-Initialisierung mittels Initialisierungslistes
berladen von Konstruktorens
Der Copy-Konstruktors
s
11.7.2 Destruktorens
11.7.3 berladen von Operatoren
Allgemeines zum berladen von Operatorens
Implementierung von speziellen Operatorens
Der Indexoperator []s
Der Operator ()s
Die Operatoren new, deletes
Der Zuweisungsoperator =s
Die Ein-/Ausgabeoperatoren >> und
-
7/28/2019 (eBook-German)C Programmieren Mit Stil
8/621
Komplexitts
Aufgabenstellungs
11.9.4 Klasse Calculator
Themenbereiches
Komplexitts
Aufgabenstellungs
Hintergrundwissens
s
11.9.5 Klasse List
Themenbereiches
Komplexitts
Aufgabenstellungs
s
11.9.6 Klasse Rational
Themenbereiches
Komplexitts
Aufgabenstellungs
s
12 Templates
12.1 Motivationr
12.2 Funktions-Templates
12.2.1 Ausprgung von Funktions-Templatess
12.2.2 berladen von Funktions-Templatess
r
12.3 Klassen-Templates
12.3.1 Definition von Klassen-Templatess
12.3.2 Ausprgung von Klassen-Templatess
12.3.3 Geschachtelte Template-Klassen und friends
12.3.4 Explizite Ausprgung und Spezialisierungs
12.3.5 Template-Typens
r
12.4 Element-Templatesr
12.5 Beispiele und bungen
12.5.1 Funktions-Template binSearch
Themenbereichs
Komplexitts
Aufgabenstellungs
Hintergundwissens
s
r
q
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (7 von 11) [10.09.2000 10:01:17]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
9/621
12.5.2 List-Template
Themenbereichs
Komplexitts
Aufgabenstellungs
Hintergrundwissens
s
12.5.3 Tree-Template
Themenbereichs
Komplexitts
Aufgabenstellungs
Hintergrundwissens
s
13 Vererbung
13.1 Einfhrung
13.1.1 Was heit Vererbung?s
13.1.2 Begriffe im Zusammenhang mit Vererbungs
r
13.2 Ableiten einer Klasser
13.3 DieIs-A-Beziehungr
13.4 Vererbung und Gltigkeitsbereicher
13.5 Element-Funktionen bei abgeleiteten Klassen
13.5.1 Konstruktorens
13.5.2 Copy-Konstruktors
13.5.3 Destruktors
13.5.4 Zuweisungsoperators
13.5.5 berschreiben von ererbten Methodens
r
13.6 Spezifikation von Basisklassenr
13.7 Beispiele und bungen
13.7.1 Klasse Word
Themenbereichs
Aufgabenstellungs
s
r
q
14 Polymorphismus und spezielle Aspekte der Vererbung
14.1 Polymorphismusr
14.2 Virtuelle Element-Funktionen
14.2.1 Deklaration von virtuellen Element-Funktionens
14.2.2 Aufruf von virtuellen Element-Funktionens
r
q
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (8 von 11) [10.09.2000 10:01:17]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
10/621
14.2.3 Virtuelle Destruktorens
14.2.4 berschreiben von nicht virtuellen Element-Funktionens
14.2.5Is-A-Vererbung als Programming by Contracts
14.2.6 Reprsentation polymorpher Objekte im Speichers
14.3 Abstrakte Basisklassen und rein virtuelle Element-Funktionenr
14.4 Mehrfachvererbungr
14.5 Virtuelle Basisklassenr
14.6 Laufzeit-Typinformation
14.6.1 Typumwandlung mit dynamic_casts
14.6.2 Der typeid-Operators
14.6.3 Erweiterung und Einsatz der Typinformations
r
14.7 Beispiele und bungen
14.7.1 Klassenhierarchie Animals
Themenbereichs
Komplexitts
Aufgabenstellungs
s
14.7.2 CellWar
Themenbereichs
Komplexitts
Aufgabenstellungs
s
14.7.3 Klassenhierarchie Maze
Themenbereichs
Komplexitts
Aufgabenstellungs
s
14.7.4 Klassenhierarchie Kellerbar
Themenbereichs
Komplexitts
Aufgabenstellungs
s
r
15 Ausnahmebehandlung
15.1 Motivationr
15.2 Ausnahmebehandlung in C++r
15.3 Auslsen von Ausnahmen und Ausnahme-Objekter
15.4 Ausnahme-Handlerr
q
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (9 von 11) [10.09.2000 10:01:17]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
11/621
15.5 Spezifikation von Ausnahmenr
15.6 Unerwartete und nicht behandelte Ausnahmenr
15.7 Ausnahmebehandlung in der Praxisr
15.8 Beispiele und bungen
15.8.1 Klasse TString II
Themenbereichs
Komplexitts
Aufgabenstellungs
s
15.8.2 Klasse Rational II
Themenbereichs
Komplexitts
Aufgabenstellungs
s
r
A Ein-/Ausgabe in C++: Streams
A.1 Streams als Abstraktion der Ein-/Ausgaber
A.2 Ausgaber
A.3 Eingaber
A.4 Formatierte Ein-/Ausgaber
A.5 Streams und Dateien
A.5.1 ffnen von Dateiens
A.5.2 Lesen und Setzen von Positionens
r
q
B Prprozessor-Direktiven
B.1 Direktivenr
B.2 Bedingte bersetzungr
q
C Die Funktion mainq
D Lsungen
D.1 Mehrfach verwendete Dateien
D.1.1 Datei fakeiso.hs
D.1.2 Datei globs.hs
D.1.3 Klasse TStrings
D.1.4 Klasse Randoms
r
D.2 Das Klassenkonzept
D.2.1 Klasse Dates
D.2.2 Klasse Counters
r
q
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (10 von 11) [10.09.2000 10:01:17]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
12/621
D.2.3 Gltigkeitsbereich, Sichtbarkeit und Lebensdauers
D.2.4 Calculator-Klassens
D.2.5 Klasse Lists
D.2.6 Klasse Rationals
D.3 Templates
D.3.1 Binr Suchens
D.3.2 List-Templates
D.3.3 Klasse Trees
r
D.4 Vererbung
D.4.1 Klasse Words
r
D.5 Polymorphismus
D.5.1 Animalss
D.5.2 CellWars
D.5.3 Mazes
D.5.4 Klassenhierarchie Kellerbar
Die Klasse SimObjects
Die Klasse Simulations
Kellner, Getrnke und Gstes
Generierung von Ereignissen (Simulationsobjekten)s
s
r
D.6 Ausnahmen
D.6.1 Klasse TString IIs
D.6.2 Die Klasse Rational IIs
r
E C++-Literaturq
F Programmverzeichnisq
Literaturq
Indexq
) Thomas Strasser,dpunkt 1997
nhalt
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/NODE3.HTM (11 von 11) [10.09.2000 10:01:17]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
13/621
orige Seite:InhaltEine Ebene hher:C++ Programmieren mit StilNchste Seite:Was das Buchcht
Vorbemerkungenas vorliegende Buch beschreibt die Programmiersprache C++ nach dem ANSI/ISO-Standard. Zumeitpunkt der Entstehung dieses Buchs (Sommer/Herbst 1996) ist der Standard allerdings noch nichtrabschiedet. Es gibt daher kein offizielles Dokument, das den endgltigen Standard beschreibt. Allistierenden Dokumente sind entwederDraft, das heit vorlufig, oder aber inoffzielle Beschreibun
n Buch ber etwas schreiben zu wollen, das noch nicht existiert, wirft eine Reihe von Problemen aie zur Verfgung stehenden Informationen sind meist vage und unsicher, es stehen noch keinentwicklungssysteme zur Verfgung, die genau dem kommenden Sprachstandard entsprechen usw.
ie Bedeutung des Sprachstandards ist aber absehbar. ber kurz oder lang werden alle C++-Compileeser Sprachdefinition folgen. Es wre also widersinnig, den existierenden 2147618 Bchern ber Cn weiteres hinzuzufgen, das nicht auf die kommenden Sprachfeatures eingeht. Zudem sind dieesentlichen neuen Sprachelemente schon seit einiger Zeit bekannt und werden sich nicht mehrrndern.
ie folgenden Abschnitte sollen kurz in die Thematik und den Aufbau des Buchs einfhren.
Was das Buch nicht istq
1.2 Aufbau des Buchsq
1.3 Schreibweisen und Konventionenq
1.4 bungsbeispiele und Entwicklungssystemeq
1.5 Die beigelegte CDq
) Thomas Strasser,dpunkt 1997
Vorbemerkungen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node4.htm [10.09.2000 10:01:35]
http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htmhttp://-/?-http://-/?-mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://-/?-http://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node2.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
14/621
orige Seite:1 VorbemerkungenEine Ebene hher:1 VorbemerkungenNchste Seite:1.2 Aufbas Buchs
.1 Was das Buch nicht istls erstes soll erlutert werden, was dieses Buch nichtist:
Das Buch ist keine komplette und umfassende Referenz fr die Programmiersprache C++ nachdem ANSI/ISO-Standard.
Die Standard-Bibliothek von C++ weist inzwischen einen derart groen Umfang auf, da sie nsehr geringem Ausma bercksichtigt werden konnte (Ein-/Ausgabe).
Wesentliche Bereiche der Bibliothek wie die unter dem Namen STL (Standard Template Librabekannten generischen Algorithmen und Datenstrukturen wurden ausgeklammert. Zum Erlernder Programmiersprache und der wesentlichen Konzepte sind sie zum einen nicht notwendig, uzum andern erfordert ihre Komplexitt eine umfangreiche Abhandlung, wie sie in diesem Buchnicht mglich wre.
Der Schwerpunkt dieses Buchs liegt auf der Vermittlung des (nach Meinung des Autors) frC++-Einsteigerund -Anfngerwesentlichen Wissens.
q
Das Buch ist kein Hersteller-spezifisches C++-Lehrbuch, sondern bezieht sich ausschlielich adenDraft-ANSI/ISO-Standard. Die hier besprochenen Konzepte sind damit auf allenANSI/ISO-kompatiblen Entwicklungssystemen gltig, die hier gebrachten Programme knnenunabhngig von Compiler und Plattform bersetzt werden (vorausgesetzt, der Compiler entsprdem Standard).
q
Das Buch setzt keine C-Kenntnisse des Lesers voraus. Der Autor ist der Meinung, da C++ ein
eigenstndige Programmiersprache ist, die auch als solche gelehrt werden sollte. C-Kenntnissesind ntzlich, aber nicht erforderlich.
q
Das Buch konzentriert sich zudem ausschlielich auf den Bereich der Programmierung. AnderThemenbereiche wie etwa die Objektorientierte Analyse, der Entwurf von objektorientiertenSystemen oder Entwurfsmuster (Design Patterns) werden in diesem Buch daher nicht erlutert
q
Weiterfhrende Themen wieHandles,Master Pointer, Speichermanagement und dergleichenwerden ebenfalls nicht behandelt. Diese Themenbereiche haben eine andere Zielgruppe und seein bereits gefestigtes Wissen um die Sprache C++ voraus.
q
Was das Buch nicht
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node5.htm (1 von 2) [10.09.2000 10:01:38]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
15/621
-
7/28/2019 (eBook-German)C Programmieren Mit Stil
16/621
orige Seite:1.1 Was das Buch nichtEine Ebene hher:1 VorbemerkungenNchste Seite:1.3chreibweisen und Konventionen
.2 Aufbau des Buchser Aufbau dieses Buchs unterscheidet sich bewut von dem der meisten anderen C++-Lehrbcher.urch seine Konzeption als Lehrbuch fr C++-Einsteiger ist es unabhngig von den verschiedenenntwicklungssystemen und -plattformen. Im Vordergrund steht nicht das Entwicklungssystem XY d
rma Z, sondern vielmehr die Sprache C++.
abei wurde versucht, das Buch nach einem alten sterreichischen Schilehrer-Grundsatz (,,Vomnfachen zum Komplexen``) zu gliedern. Die ersten Kapitel beschftigen sich daher mit deninfachen`` Aspekten der Sprache: Sprachelemente & Grammatik, Basisdatentypen, Ausdrcke undeiter bis hin zu C++-Modulen. Diese Grundlagen mgen zwar (vor allem fr Leser mit C-Erfahrungngatmig erscheinen, doch eine grndliche und fr den Leser nutzbringende Abhandlung deresentlichen Konzepte ist nur mglich, wenn die ,,einfachen`` Sprachelemente klar erlutert sind.
eser, die schon ber entsprechende Erfahrungen verfgen, knnen sich bei den einfhrenden KapiteKapitel 2 bis einschlielich 6) auf eine auszugsweise Lektre beschrnken.
m Detail ist das Buch wie folgt aufgebaut:
Kapitel 2 bringt eine kurze Einfhrung in die Sprache C++ anhand von einigen kleinenProgrammen. Im Vordergrund steht dabei nicht die Erluterung von Sprachkonzepten, sondernvielmehr die Vorstellung des Schemas von einfachen C++-Programmen.
Diese einfachen Programme knnen vom Leser abgendert und getestet werden. So ist er in deLage, von Anfang an Codebeispiele besser verstehen und eigene kleine Programme erstellen zknnen.
q
Kapitel 3 beschreibt, aus welchen Zeichen und Zeichenfolgen (lexikalischen Elementen)C++-Programme aufgebaut sind.
q
Kapitel 4 stellt die grundlegenden Datentypen von C++ vor. Auf diesen einfachen Datentypenbauen die hheren und strukturierten Datentypen auf.
q
Datenelemente werden in Ausdrcken, die aus Operanden und Operatoren bestehen, verarbeiteq
.2 Aufbau des Buchs
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node6.htm (1 von 3) [10.09.2000 10:01:41]
http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
17/621
Kapitel 5 werden die verschiedenen Arten von Ausdrcken sowie die einzelnen Operatorenvorgestellt.
Grundelemente von C++-Programmen sind Anweisungen. Anweisungen enthalten Ausdrckedeklarieren Objekte und steuern den Ablauf von Programmen. Kapitel 6 beschreibt dieverschiedenen Arten von Anweisungen.
q
Eine spezielle Anweisung ist die Funktionsanweisung. Sie ist das erste (und einfachste)Strukturierungs- und Abstraktionsmittel von C++ und fat mehrere Anweisungen zu einer
,,Super-Anweisung`` zusammen. Kapitel 7 beschreibt Funktionen im Allgemeinen sowieverschiedene C++-Spezifika wie Operator-Funktionen, das Konzept des berladens odervorbelegte Funktionsparameter.
q
Aufbauend auf diesen Kapiteln werden in Kapitel 8 die hheren Datentypen (Referenzen, Zeigund Vektoren) im Detail besprochen. Neben den eigentlichen Datentypen steht dabei auch ihrEinsatz (zum Beispiel die Verwendung von Referenzen bei der Parameterbergabe) imVordergrund. Auch die strukturierten Datentypen (Klassen) werden berblicksmig besproch
q
Kapitel 9 vertieft einige bisher nur oberflchlich behandelte Aspekte: Gltigkeitsbereiche,Deklarationen und die verschiedenen Mglichkeiten der Typumwandlung in C++.
q
Der ,,traditionelle`` Teil des Buchs wird durch einen Abschnitt ber die modulbasierteProgrammierung in C++ beschlossen (Kapitel 10). Das Kapitel beschreibt die Realisierung vonModulen in C++ und betont insbesonders die Bedeutung des Geheimnisprinzips.
q
Kapitel 11 ist das ,,Kernkapitel`` des Buchs und erlutert das Klassenkonzept. Die Realisierunvon Klassen und Themenbereiche wie Speichermanagement, berladen von Operatoren,kanonische Form von Klassen etc. werden in diesem Kapitel anhand eines durchgngigenBeispiels demonstriert.
q
Kapitel 12 beschreibt das Konzept der Generizitt in C++. Besprochen werden generische
Funktionen (Funktions-Templates) und Klassen (Klassen-Templates).
q
Kapitel 13 zeigt die Realisierung von Vererbung in C++. Dabei stehen zunchst nur die,,statischen`` Aspekte der Vererbung im Vordergrund.
q
Darauf aufbauend werden in Kapitel 14 die dynamischen Aspekte (Polymorphismus, AbstraktBasisklassen) sowie verschiedene andere weiterfhrende Themenbereiche(Laufzeit-Typinformation, Mehrfachvererbung) besprochen.
q
Kapitel 15 beschliet das Buch mit einer Beschreibung des Konzepts der Ausnahmebehandlunq
den Anhngen sind verschiedene ergnzende Abschnitte angefhrt, die vom Leser je nach Bedarf
urchgearbeitet werden knnen:Anhang A stellt die Ein-/Ausgabe in C++ kurz und berblicksweise vor.q
Anhang B beschreibt den C++-Prprozessor.q
Anhang C behandelt die ,,Hauptfunktion`` von C++-Programmen sowie die Parameterbergabdiese.
q
Anhang E fhrt in einer kurzen bersicht eine Reihe von empfehlenswerten C++-Bchern an.q
.2 Aufbau des Buchs
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node6.htm (2 von 3) [10.09.2000 10:01:41]
http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?-http://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
18/621
orige Seite:1.1 Was das Buch nichtEine Ebene hher:1 VorbemerkungenNchste Seite:1.3chreibweisen und Konventionen (c) Thomas Strasser,dpunkt 1997
.2 Aufbau des Buchs
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node6.htm (3 von 3) [10.09.2000 10:01:41]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
19/621
orige Seite:1.2 Aufbau des BuchsEine Ebene hher:1 VorbemerkungenNchste Seite:1.4bungsbeispiele und Entwicklungssysteme
.3 Schreibweisen und Konventionenchreibweisen wie zum Beispiel derAnwender werden in einer allgemeinen und geschlechtsneutraleedeutung verwendet.
ursive Schreibweisen heben Begriffe hervor.
nglischsprachige Begriffe sind ebenfalls kursiv gedruckt. Setzen sie sich aus mehreren Wrternsammen, so werden sie nicht durch Bindestriche verbunden (Call by Value anstelle vonall-by-Value).
odestcke und Schlsselwrter sind im Zeichensatz Typewriter gesetzt.
tate erfolgen wie blich unter Angabe der entsprechenden Seitenzahlen. Lediglich in den entsprechfbereiteten Quellen werden die Stellen ber logische Namen angegeben (zum Beispiel [ISO95,l.dcl]), da diese unabhngig von den konkreten Seitenzahlen sind. Eine weitere Bemerkung zu
SO95]: DieseDraft-Version des C++-Standards ist im Gegensatz zur Version vom Dezember 1996
rfgbar. Wo immer mglich wird daher diese Version des Standards zitiert.wei besondere Absatzformate sind zu erwhnen. Beide kennzeichnen spezielle Sachverhalte und sinurch eine Grafik am ueren Rand und durch eine Einrckung nach auen vom restlichen Textgegrenzt:
Wird im Text auf eine Tatsache besonders hingewiesen, so ist der
entsprechende Textabschnitt durch ein Ausrufezeichen am Rand speziellgekennzeichnet.
Spezielle Tips hingegen werden durch seitliche ,,Striche`` markiert. ImGegensatz zu den Anmerkungen sind diese Tips ,,subjektive`` Hinweisedes Autors.
.3 Schreibweisen und Konventionen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node7.htm (1 von 2) [10.09.2000 10:01:46]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
20/621
orige Seite:1.2 Aufbau des BuchsEine Ebene hher:1 VorbemerkungenNchste Seite:1.4bungsbeispiele und Entwicklungssysteme
) Thomas Strasser,dpunkt 1997
.3 Schreibweisen und Konventionen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node7.htm (2 von 2) [10.09.2000 10:01:46]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
21/621
orige Seite:1.3 Schreibweisen und KonventionenEine Ebene hher:1 VorbemerkungenNchsteeite:1.5 Die beigelegte CD
.4 bungsbeispiele undEntwicklungssysteme
ogrammieren erlernt man nicht durch das Studium von Bchern oder Handbchern, sondern nur du
bung. Dieses Buch ist lediglich ein ,,Hilfsmittel`` und bereitet die Programmiersprache C++ fr deneser auf. Die Umsetzung der Konzepte bei konkreten Problemstellungen aber obliegt dem Leser.
m Mglichkeiten der Umsetzung und die Anwendung der besprochenen Konzepte aufzuzeigen, weher bungsbeispiele verwendet. Dabei handelt es sich weder um theoretische Fragen bezglich Sy
der andere Problembereiche von C++ noch um umfangreiche Beispiele, deren Lsungen nurszugsweise angefhrt werden knnen.
ielmehr werden Beispiele verwendet, deren konkrete (und vor allem vollstndige) Lsungen dem L
e Anwendung der besprochenen Sprachkonzepte zeigen.
bungsaufgaben werden ab Kapitel 11 (Klassen) gestellt und sind durch kurze Angaben, die bewutge und offen gehalten sind, spezifiziert. Die Angaben geben dem Leser damit groen Freiraum inzug auf die Realisierung. Jedes einzelne Beispiel ist vollstndig in dem Sinne, da eine Klasse odene Reihe von Klassen inklusive Testprogramm zu erstellen ist.
ie Aufgabenstellungen stammen aus Programmierkursen im universitren und aueruniversitrenereich und wurden in den abgebildeten Formen von Kursteilnehmern gelst.
der elektronischen Version des Buchs, die auf der beigelegten CD enthalten ist, werden die Lsunr Beispiele diskutiert. Dazu werden eine allgemeine Lsungsidee sowie Auszge aus den wesentlic
assagen der Lsung angefhrt. Die vollstndigen Lsungen sind ebenfalls auf der mitgelieferten CDthalten.
ie einzelnen Aufgaben sind bewut allgemein gehalten und sollten auf jedem++-Entwicklungssystem, das dem ANSI/ISO-Standard weitgehend entspricht, bersetzt werdennnen.
.4 bungsbeispiele und Entwicklungssysteme
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node8.htm (1 von 2) [10.09.2000 10:01:48]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
22/621
u beachten ist, da die angefhrten Lsungen keineswegs die idealen Lsungen der Beispielerstellen. Sie sind vielmehr mgliche Lsungen, die dem Leser zeigen sollen, wie bestimmte Konze
mgesetzt werden knnen.
a es sich bei allen Aufgaben um vollstndige Beispiele handelt, kann der Leser experimentieren: Ernn die Dateien bersetzen und abndern, er kann die Programme ausfhren oder debuggen und so nauen Ablauf verfolgen.
orige Seite:1.3 Schreibweisen und KonventionenEine Ebene hher:1 VorbemerkungenNchste
eite:1.5 Die beigelegte CD (c) Thomas Strasser,dpunkt 1997
.4 bungsbeispiele und Entwicklungssysteme
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node8.htm (2 von 2) [10.09.2000 10:01:48]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
23/621
orige Seite:1.4 bungsbeispiele und EntwicklungssystemeEine Ebene hher:1 Vorbemerkungechste Seite:2 Einfhrung
.5 Die beigelegte CDem Buch liegt eine CD bei, die folgende Informationen enthlt:
Alle bungsbeispiele sind auf der CD vollstndig aufgefhrt.q
Das gesamte Buch ist auf der CD in Hypertext-Form (HTML) enthalten. Mit Hilfe vonWWW-Browsern (zum Beispiel NetscapesNavigatoroder MicrosoftsExplorer) kann diese
Version als eine Art Online-Manual benutzt werden.
Die HTML-Version umfat verschiedene Informationen, die im Buch nicht angefhrt sind. Sodie Beispielprogramme vollstndig (und nicht nur auszugweise) enthalten, verschiedeneReferenzen geben interessante Adressen im Internet an etc.
q
Auf der CD sind verschiedene Versionen desNetscapeNavigator(Windows, Unix,Macintoshenthalten. DerNavigatordarfausschlielichoffline und zum Lesen der beigelegtenHTML-Version des Buchs verwendet werden. Jegliche Zuwiderhandlung stellt einen Bruch deLizenzabkommens dar!
q
) Thomas Strasser,dpunkt 1997
.5 Die beigelegte CD
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node9.htm [10.09.2000 10:01:51]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
24/621
orige Seite:1.5 Die beigelegte CDEine Ebene hher:C++ Programmieren mit StilNchste Seite1 Die Programmiersprache C++
2 Einfhrungieses Kapitel gibt einen kurzen berblick ber die Entwicklung von C++ und fhrt anschlieendhand von einigen kleinen Beispielen grob und unvollstndig in die allgemeine Struktur von
++-Programmen ein. Dieser Abschnitt soll helfen, die verwendeten Programmbeispiele in den ersteapiteln besser verstehen zu knnen.
2.1 Die Programmiersprache C++
2.1.1 Grundlagen von C++r
2.1.2 Die Entwicklung von C++r
q
2.2 Einfache C++-Programme
2.2.1 Das erste Programm: Hello world!r
2.2.2 Variablen und Kontrollstrukturenr
2.2.3 Funktionenr
q
) Thomas Strasser,dpunkt 1997
Einfhrung
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node10.htm [10.09.2000 10:01:56]
http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htmhttp://-/?-http://-/?-http://-/?-http://-/?-mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://-/?-http://-/?-http://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
25/621
orige Seite:2 EinfhrungEine Ebene hher:2 EinfhrungNchste Seite:2.1.1 Grundlagen von
2.1 Die Programmiersprache C++ie folgenden zwei Abschnitte beschreiben kurz und berblicksmig die Programmiersprache C++wie ihre Entwicklung.
2.1.1 Grundlagen von C++q2.1.2 Die Entwicklung von C++q
) Thomas Strasser,dpunkt 1997
.1 Die Programmiersprache C++
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node11.htm [10.09.2000 10:01:58]
http://-/?-mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
26/621
rige Seite:2.1 Die Programmiersprache C++Eine Ebene hher:2.1 Die Programmiersprache C++Nchste Seite:2.e Entwicklung von
.1.1 Grundlagen von C+++ wurde von Bjarne Stroustrup [Str92] entwickelt und basiert auf der Programmiersprache C, die Anfang der siebziger
971) fr das Betriebssystem UNIX entwickelt wurde und Bestandteil dessen Programmierumgebung ist. Die klassischeSprachdefinition wurde 1978 von Brian Kernighan und Dennis Ritchie vorgelegt [KR78], fnf Jahre spter begannen d
merican National Standards Institute (ANSI) und dieInternational Standardization Organization (ISO) einen neuen Statzulegen.
e zweite Grundlage fr C++ ist Simula67. Von dieser Sprache wurde das Klassenkonzept mit abgeleiteten Klassen undtuellen Funktionen entliehen.
e Grnde, warum Stroustrup C als Basissprache fr C++ whlte, sind:C ist vielseitig und prgnant.q
C ist effizient.q
C eignet sich fr die meisten Aufgaben in der Systemprogrammierung.q
C ist auf praktisch allen Rechnersystemen verfgbar und einfach portierbar.q
C ist Bestandteil der UNIX-Programmierumgebung.q
Es existiert eine Vielzahl an Bibliotheksroutinen und Software-Utilities, die in C geschrieben sind und von C++ genwerden knnen.
q
+ ist daher weitgehend kompatibel zu C. Die Kompatibilitt zu C hat aber nicht nur Vorteile, wie Programm 2.1 zeigt.
i,j,k,l,s,a[99];
in()
for(scanf("%d",&s);*a-s;v=a[j*=v]-a[i],k=i
(i==j?a[i+=k]=0:++a[i])>=s*k&&++a[--i]);
eses Programm lst das Problem der acht Damen, funktioniert aber auch mit 4-99 Damen. Als ,,Damenproblem`` wird fgabe bezeichnet, acht Damen so auf einem Schachbrett zu plazieren, da keine der Damen eine der anderen ,,schlagen
nn``.
s Programm ist ein durchaus legales C-Programm:
,,The authors note, that they use 'no preprocessor statements and no ifs, breaks, cases, functions, gotos, structuresIn short, it contains no C language that might confuse the innocenter'.`` [Lib93, S. 301]
tschlich ist das Programm 1990 als Sieger beim jhrlichen Obfuscated C Code Contesthervorgegangen - KategorieBeall Program.
.1.1 Grundlagen von C++
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node12.htm (1 von 2) [10.09.2000 10:02:00]
http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
27/621
oustrup ist fr die enge Anlehnung von C++ an C oft und hart kritisiert worden. Der Erfolg von C++ aber besttigt diestscheidung.
rige Seite:2.1 Die Programmiersprache C++Eine Ebene hher:2.1 Die Programmiersprache C++Nchste Seite:2.
e Entwicklung vonThomas Strasser,dpunkt 1997
.1.1 Grundlagen von C++
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node12.htm (2 von 2) [10.09.2000 10:02:00]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
28/621
orige Seite:2.1.1 Grundlagen von C++Eine Ebene hher:2.1 Die Programmiersprache C++
.1.2 Die Entwicklung von C++979 begann Bjarne Stroustrup seine Arbeit an C with Classes als ein Resultat seiner Probleme imusammenhang mit einer groen Simulationsaufgabe, die in Simula entwickelt wurde. C with Classear eine erweiterte Version von C, die zustzlich folgende Sprachelemente umfate:
Klassenq
Vererbung ohne PolymorphismusqKonstruktoren und Destruktorenq
Funktionenq
friend-Deklarationenq
Typprfungq
ie Implementierung von C with Classes bestand in einem Prprozessor, der C with Classes-ProgramC-Programme bersetzte.
b 1982 fhrte Stroustrup die Entwicklung von C with Classes fort. Der Entwicklungsproze mndehlielich in der Version 3.0 von C++, die den im The Annotated C++ Reference Manual (ARM)S90] beschriebenen Sprachstandard implementierte. C++ umfate in dieser Version folgende neue
eatures:
Virtuelle Funktionenq
berladen von Funktionen und Operatorenq
Referenzenq
Konstantenq
Speichermanagementq
Templatesq
m Jahr 1991 fand das erste Treffen derISO Workgroup 21 statt. Die Arbeit desandardisierungs-Komitees mndete 1995 in einem sogenanntenDraft Standard[ISO95]. Im Laufehres 1998 wird der endgltige Standard erwartet. Gegenber der Version 3.0 wurde C++ imesentlichen um folgende Features erweitert:
Ausnahmebehandlung (Exception Handling)q
Laufzeit-Typinformationssystem (Run-Time Typ Information)q
.1.2 Die Entwicklung von
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node13.htm (1 von 2) [10.09.2000 10:02:07]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
29/621
Namensrume (Name Spaces)q
Neue Mglichkeiten der Typumwandlungq
asis fr dieses Buch sind der letzte verfgbareDraft-C++-Standard [ISO95] sowie verschiedene (nioffizielle``) Dokumente, die diesen Standard betreffen.
orige Seite:2.1.1 Grundlagen von C++Eine Ebene hher:2.1 Die Programmiersprache C++ (c)homas Strasser,dpunkt 1997
.1.2 Die Entwicklung von
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node13.htm (2 von 2) [10.09.2000 10:02:07]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
30/621
orige Seite:2.1.2 Die Entwicklung vonEine Ebene hher:2 EinfhrungNchste Seite:2.2.1 Daste Programm: Hello world!
2.2 Einfache C++-Programmeie im folgenden angefhrten einfachen C++-Programme sollen dem Leser ber die ,,Tristheit`` derrundlagen in den ersten Kapiteln hinweghelfen. Sie sollen ihm ermglichen, kleine und einfacheestprogramme zu erstellen. Dabei ist es nicht notwendig, da jede Anweisung der Beispielprogramms ins letzte Detail verstanden wird.
m einfachsten Fall besteht ein C++-Programm aus einer Textdatei, die den Programmcode (Source)thlt. Diese Datei mu vom Compiler bersetzt werden. Der Compiler erzeugt dabei ein sogenanntbject File. Ein Object File enthlt die fr den Computer ,,bersetzten`` Informationen derogrammdatei. In der Regel ist der Name eines Object Files gleich dem Namen des Source Files mi
ndung .obj (MSDOS, Windows oder OS/2) beziehungsweise .o (Unix).
bject Files knnen noch nicht ausgefhrt werden. Jedes Programm bentigt bestimmte spezielleodeteile fr die Ausfhrung, die nicht extra vom Programmierer erstellt werden mssen. Auerdemird in Programmen im Allgemeinen eine Reihe von bereits vordefinierten Funktionen und anderenbjekten verwendet, deren Definitionen nicht im Source File enthalten sind (zum Beispiel die
n-/Ausgaben). Diese sind in bereits fertig bersetzten Teilen, den sogenannten ,,Bibliotheken``ibaries) abgelegt.
nmerkung: Der Begriff ,,Objekt`` wird in den ersten Kapiteln nichtim objektorientierten Sinnerwendet. Vielmehr bezeichnet ,,Objekt`` vorerst ganz allgemein ein ,,Ding`` im Speicher.
m aus einem Object File ein ausfhrbares Programm zu machen, ist es daher ntig, dieses mit denntigten Bibliotheken zu linken (Deutsch: binden). Erst durch diesen Schritt wird ein ausfhrbaresogramm erzeugt.
2.2.1 Das erste Programm: Hello world!q
2.2.2 Variablen und Kontrollstrukturenq
2.2.3 Funktionenq
.2 Einfache C++-Programme
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node14.htm (1 von 2) [10.09.2000 10:02:10]
http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
31/621
orige Seite:2.1.2 Die Entwicklung vonEine Ebene hher:2 EinfhrungNchste Seite:2.2.1 Daste Programm: Hello world!
) Thomas Strasser,dpunkt 1997
.2 Einfache C++-Programme
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node14.htm (2 von 2) [10.09.2000 10:02:10]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
32/621
rige Seite:2.2 Einfache C++-ProgrammeEine Ebene hher:2.2 Einfache C++-ProgrammeNchste Seite:2.2.2 Vard Kontrollstrukturen
.2.1 Das erste Programm: Hello world!e bereits oben erwhnt, kann ein C++-Programm aus einer einzelnen Datei bestehen, die die ,,Hauptfunktion`` main u
gebenenfalls weitere Funktionen enthlt. main wird beim Start eines C++-Programms automatisch aktiviert.
s traditionell erste zu erstellende C++-Programm (und zugleich eines der einfachsten) gibt den Text ,,Hello world` aus
//File: hello.cpp
// Hello World
// Schnittstelle von iostream inkludieren// iostream ist ein vordefiniertes Modul, daher wird
// der Name mit den Zeichen begrenzt
nclude
// "Hauptprogramm"
id main()
cout > Argument;
Dabei wird der Wert des Arguments unter Verwendung des Operators >> (,,lesen von``, get from) vomStandard-Eingabestromcin, also von der Tastatur, eingelesen.
Die Ausgabe erfolgt mit Anweisungen der Art
cout
-
7/28/2019 (eBook-German)C Programmieren Mit Stil
33/621
Sowohl Eingabeoperator >> wie auch Ausgabeoperator > "Hello" >> " " >> "world!";
rige Seite:2.2 Einfache C++-ProgrammeEine Ebene hher:2.2 Einfache C++-ProgrammeNchste Seite:2.2.2 Vard Kontrollstrukturen
Thomas Strasser,dpunkt 1997
.2.1 Das erste Programm:
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node15.htm (2 von 2) [10.09.2000 10:02:11]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
34/621
rige Seite:2.2.1 Das erste Programm: Hello world!Eine Ebene hher:2.2 Einfache C++-ProgrammeNchstete:2.2.3 Funktionen
.2.2 Variablen und Kontrollstrukturen
s folgende Programm lst eine Gleichung der Form ax2+bx +c = 0. Das Programm liest die Koeffizienten a, b und c einmittelt anschlieend das Ergebnis.
e Lsung einer derartigen Gleichung kann nach der Formelx1,2 = -0.5*p sqrt((0.5*p)2 - q) erfolgen, wobei sichp und
umgeformten Gleichung ergeben (p = b/a, q = c/a) und sqrtdie Quadratwurzelfunktion darstellt:
nclude
nclude
id main()
float a, b, c;
float help, diskr;
cout c;
// Loesung wenn a!=0
if (a!=0) {
help=-0.5*b/a;
diskr=help*help-c/a;
if (diskr==0) { // Eine (reelle) Loesung
cout
-
7/28/2019 (eBook-German)C Programmieren Mit Stil
35/621
cout tag >> monat >> jahr;
cin >> trennZeichen;
cout
-
7/28/2019 (eBook-German)C Programmieren Mit Stil
36/621
rige Seite:2.2.2 Variablen und KontrollstrukturenEine Ebene hher:2.2 Einfache C++-Programme
.2.3 Funktionen
ogramm 2.4 berechnet einen ,,Turm`` und gibt ihn aus. Dabei wird eine Zahl eingelesen und anschlieend mit zweiltipliziert. Das Ergebnis wird ausgeben und mit drei multipliziert. Dies wird bis zur Zahl 9 wiederholt, anschlieend erf
visionen durch 2 bis 9. Das Ergebnis ist wiederum die Ausgangszahl. Der Turm ist ,,formatiert`` auszugeben, die Eingabhl 0 soll das Programm beenden. Negative Eingaben sind nicht zulssig.
diesem Programm werden bereits die wichtigsten Kontrollstrukturen verwendet: Bedingungsanweisungen (if) und Schor, while, do).
e formatierte Ein-/Ausgabe erfolgt ber die Module iostream und die Funktion setw des Moduls iomanip.
nclude
// iomanip-Modul erlaubt das Festsetzen der
// Feldlaenge bei der Ausgabe
nclude
// Funktion berechneTurm, berechnet u. gibt einen
// "Turm" basierend auf der Zahl num aus
id berechneTurm(int num)
// Vereinbarung der lokalen Variablen
long help = num;
// Multiplikation der Zahlen, for-Schleife:
// die Variable opnd wird mit 2 initialisiert.
// Dann wird der Schleifenrumpf durchlaufen (alle
// Anweisungen zwischen { und }) und opnd erhoeht.
// Anschliessend wird geprueft, ob opnd < 10 ist.
// Falls ja, dann wird der Schleifenrumpf abermals
// durchlaufen ...
for (int opnd=2; opnd
-
7/28/2019 (eBook-German)C Programmieren Mit Stil
37/621
// Division der Zahlen, for-Schleife
for (int opnd=2; opnd
-
7/28/2019 (eBook-German)C Programmieren Mit Stil
38/621
Die erste Schleife (die ,,uere`` Schleife) enthlt eine zweite Schleife (die ,,innere``) sowie eine if-Anweisung. Diuere Schleife ist eine sogenannte do-Schleife, die alle Anweisungen zwischen dem folgenden { und demabschlieenden } wiederholt, solange die dahinter angefhrte Bedingung (num > 0) gilt. Die Prfung der Bedingerfolgt jeweils nach der Ausfhrung dieser Anweisungen.
q
Die innere while-Schleife wiederholt die enthaltenen Anweisungen solange die gelesene Zahl kleiner 0 ist.q
Die Bedingungsanweisung if (num > 0) {} fhrt die enthaltenen Anweisungen dann aus, wenn num grer 0q
rige Seite:2.2.2 Variablen und KontrollstrukturenEine Ebene hher:2.2 Einfache C++-Programme (c) Thomas Straunkt 1997
.2.3 Funktionen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node17.htm (3 von 3) [10.09.2000 10:02:13]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
39/621
orige Seite:2.2.3 FunktionenEine Ebene hher:C++ Programmieren mit StilNchste Seite:3.1prachbeschreibung mit Grammatik
3 Lexikalische Elemente von C++ieses Kapitel befat sich mit den Symbolen, aus denen (gltige) C++-Programme bestehen. Um denonkreten Aufbau dieser Symbole exakt zu beschreiben, wird, hnlich wie in natrlichen Sprachen, erammatik verwendet.
iese Grammatik wird zunchst dargelegt, dann erfolgt die Beschreibung der verschiedenen Symbol
++ kennt folgende Arten von Symbolen:Bezeichnerq
Schlsselwrterq
LiteraleGanze Zahlen, Fliekommazahlen, Zeichen, Zeichenketten, Wahrheitswerte
q
Operatoren und Begrenzerq
Kommentareq
3.1 Sprachbeschreibung mit Grammatikq
3.2 Bezeichnerq
3.3 Schlsselwrterq
3.4 Literale
3.4.1 Ganze Zahlenr
3.4.2 Fliekommazahlenr
3.4.3 Zeichenr
3.4.4 Zeichenkettenr
3.4.5 Wahrheitswerter
q
3.5 Operatoren und Begrenzer
3.5.1 Operatorenr
3.5.2 Begrenzerr
q
Lexikalische Elemente von
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node18.htm (1 von 2) [10.09.2000 10:02:14]
http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htmhttp://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://-/?-http://-/?-http://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
40/621
-
7/28/2019 (eBook-German)C Programmieren Mit Stil
41/621
orige Seite:3 Lexikalische Elemente vonEine Ebene hher:3 Lexikalische Elemente vonNchseite:3.2 Bezeichner
3.1 Sprachbeschreibung mit Grammatiks gibt verschiedene Mglichkeiten, zu beschreiben, wie ein ,,richtiges`` Programm aussieht und auselchen Symbolen es zusammengesetzt ist. Eine Variante ist zum Beispiel die Aufzhlung allerorrekten Programme, eine zweite die verbale Erklrung von Regeln , nach denen Programme aufgebnd.
ie erste Mglichkeit ist nicht umsetzbar, da die Menge aller mglichen Programme unendlich gro uch die zweite ist nicht zufriedenstellend, da sie zu umstndlichen und oft nicht eindeutigenklrungen fhrt.
der Informatik bedient man sich daher einer dritten Mglichkeit, der Beschreibung einerogrammiersprache durch eine formale Grammatik. Die Grammatik einer Programmiersprache bestnalog der Grammatik von natrlichen Sprachen) aus einer Menge vonRegeln, die angibt, wie dienzelnen Stze (Anweisungen), aus denen sich ein Programm zusammensetzt, aufgebaut sein mssene Regel besteht aus einem zu definierenden Symbol, gefolgt von einem Doppelpunkt und derefinition des Symbols. Alle Symbole einer Grammatik, die auf der linken Seite einer Regel (= vor d
oppelpunkt) erscheinen, werden alsNon-Terminalsymbole bezeichnet, Symbole, die ausschlielichr rechten Seite vorkommen, als Terminalsymbole .
azu ein kurzes und unvollstndiges Beispiel:
ame:
Buchstabe
NameBuchstabe
uchstabe: one of
a b c d e f g h i j k l m
n o p q r s t u v w x y z
ahl:
VorzeichenoptZiffernfolge
.1 Sprachbeschreibung mit Grammatik
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node19.htm (1 von 3) [10.09.2000 10:02:14]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
42/621
orzeichen: one of
+ -
iffer: one of
0 1 2 3 4 5 6 7 8 9
iffernfolge:
Ziffer
ZiffernfolgeZiffer
ie Erklrung zur oben angefhrten Grammatik:
EinName ist entweder einBuchstabe oder eine Aneinanderreihung (Sequenz) von einemNamgefolgt von einemBuchstaben. Die ,,Entweder-Oder``-Beziehung ergibt sich aus der Anfhrunder beiden um eine Ebene eingerckten Vereinbarungen. Ist eine Vereinbarung lnger als eineZeile, so werden die folgenden Zeilen weiter eingerckt (wie im Fall vonBuchstabe).
q
EinBuchstabe ist eines der dahinter angefhrten Symbole (one of
, einer von):a
,b
z
.q
EineZahl ist ein optionales Vorzeichen gefolgt von einerZiffernfolge. Optional bedeutet, da svor einerZiffernfolge genau ein oder kein Vorzeichen befinden kann.
q
Ein Vorzeichen ist entweder ein + oder ein -.q
EineZifferist eines der dahinter angefhrten Symbole (09).q
EineZiffernfolge ist entweder eineZifferoder aber eineZiffernfolge gefolgt von einerZiffer.q
ltige Stze lassen sich durch Anwendung der Regeln der Grammatik bilden beziehungsweise auf dWurzelsymbol`` zurckfhren. Ein Beispiel fr einen gltigen (= der Grammatik entsprechenden)
amen ist abcdef:f ist einBuchstabe, der vordere Teil des Satzes (abcde) ist einName (NameBuchstabe).q
DerNameabcde kann wiederum in einenBuchstaben (e) und einenNamen (abcd) zerlegtwerden.
q
DerNameabcd wird so lange auf die Folge vonNameBuchstabe zurckgefhrt, bisschluendlich derBuchstabea brigbleibt, der aufName zurckgefhrt werden kann.
q
benso sind a und abba gltigeNamen und +1234, 98 oder -98 gltigeZahlen. 1a,_ABC oder 1nd hingegen keine gltigenNamen.
wei Anmerkungen zur verwendeten Grammatik:Die hier verwendete Beschreibungsform einer Grammatik geht auf [ISO95] beziehungsweise[Str92] zurck und stellt an und fr sich keine der ,,blichen`` wissenschaftlichenBeschreibungsformen dar. Sie wird aber im Umfeld von C++ und damit auch in diesem Buchverwendet.
q
Die Grammatik von C++ ist zum Teil derart komplex, da sie schwer verstndlich ist undkeinesfalls Klarheit schafft. Dieses Buch ist kein Sprachhandbuch zur Programmiersprache C+und erhebt daher nicht den Anspruch, C++ in seiner Gesamtheit zu beschreiben. Formale
q
.1 Sprachbeschreibung mit Grammatik
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node19.htm (2 von 3) [10.09.2000 10:02:14]
http://d%7C/Coolhttp://d%7C/Cool -
7/28/2019 (eBook-German)C Programmieren Mit Stil
43/621
Beschreibungen der Syntax der Programmiersprache C++ werden ausschlielich dort verwendwo sie Klarheit schaffen und Zweideutigkeiten vermeiden helfen. Beschreibungen, die keineKlarheit bringen, werden nicht verwendet.
orige Seite:3 Lexikalische Elemente vonEine Ebene hher:3 Lexikalische Elemente vonNchseite:3.2 Bezeichner
) Thomas Strasser,dpunkt 1997
.1 Sprachbeschreibung mit Grammatik
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node19.htm (3 von 3) [10.09.2000 10:02:14]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
44/621
orige Seite:3.1 Sprachbeschreibung mit GrammatikEine Ebene hher:3 Lexikalische Elemente chste Seite:3.3 Schlsselwrter
3.2 Bezeichnerezeichner sind Namen fr beliebige ,,Objekte`` im Programm: Variablen, Funktionen, selbstdefinieatentypen, Klassen, Objekte etc. Fr Bezeichner gilt, da sie aus beliebigen Buchstaben, Ziffern unm Zeichen _ (Underscore ) zusammengesetzt sind, mit der Einschrnkung, da das erste Zeichen kffer sein darf.
e sind wie folgt aufgebaut:
dentifier:
nondigit
identifiernondigit
identifierdigit
ondigit: one of
_ a b c d e f g h i j k l m
n o p q r s t u v w x y z
A B C D E F G H I J K L M
N O P Q R S T U V W X Y Z
igit: one of
0 1 2 3 4 5 6 7 8 9
eispiele fr gltige Bezeichner sind hallo,_hallo,_(Underscore) oder Test123. Dagegen siHallo, +abcd oder etwa bba ungltige Bezeichner.
wei Dinge sind in bezug auf Bezeichner wesentlich:
C++ ist Case Sensitive , das heit, es unterscheidet zwischen Gro- und Kleinschreibung. sumSum sind daher zwei verschiedene Bezeichner.
q
Wrter werden durch Zeichen, die keine Buchstaben, Ziffern und Underscores sind, begrenzt.q
.2 Bezeichner
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node20.htm (1 von 2) [10.09.2000 10:02:15]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
45/621
Daher ist zum Beispiel elseif ein einzelner Bezeichner und nicht die Aufeinanderfolge vonelse und if.
ichtig ist, bei der Wahl von Bezeichnernamen konsistent vorzugehen. Bezeichnernamen sollten nastimmten (frei whlbaren) Regeln aufgebaut sein. So wird erreicht, da bereits aus dem Namenrvorgeht, um welche Art von Bezeichnern es sich handelt. Im folgenden werden einige Richtlinienahl der Bezeichner vorgeschlagen (basierend auf [HN93]):
Variablen, Konstanten, Funktionen und Methoden beginnen mit einem Kleinbuchstaben, Type
mit einem Grobuchstaben.
q
Namen, die aus mehr als einem Wort zusammengesetzt sind, werden inMixed Case notiert:endOfLineReached.
q
Bezeichner sollten ,,sinnvolle`` Namen erhalten:
Variablennamen sollten Rckschlsse auf ihre Art erlauben und entsprechend gewhltwerden: isDone kann wahr oder falsch sein, eine Variable numberOfLines wird einZahl sein und eine Variable firstName eine Zeichenkette.
r
Funktionen und Methoden werden mit ,,Ttigkeiten`` umschrieben: terminatePrg,
insertBlanks oder draw.
r
q
Bezeichner, die mit zwei Underscores (_), denen ein Grobuchstabe folgt, beginnen, sind zwasyntaktisch richtig, allerdings oft fr Compiler-interne Bezeichner reserviert und sollten dahervermieden werden.
q
orige Seite:3.1 Sprachbeschreibung mit GrammatikEine Ebene hher:3 Lexikalische Elemente chste Seite:3.3 Schlsselwrter
) Thomas Strasser,dpunkt 1997
.2 Bezeichner
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node20.htm (2 von 2) [10.09.2000 10:02:15]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
46/621
orige Seite:3.2 BezeichnerEine Ebene hher:3 Lexikalische Elemente vonNchste Seite:3.4terale
3.3 Schlsselwrterchlsselwrter sind reservierte Bezeichner mit einer vorgegebenen Bedeutung und dienen zureschreibung von Aktionen und Objekten in C++-Programmen. Sie drfen daher nicht anderweitigrwendet werden. Tabelle 3.1 zeigt die Schlsselwrter von C++.
Kategorie Schlsselwrter
Basisdatentypen booltruefalsecharwchar_tshortsigned
unsignedintlongfloatdoublevoid
Datentypen enumclassstructuniontypedef
Speicherklassen autoexternregisterstaticmutable
Qualifizierer constvolatile
Kontrollstrukturen ifwhileelsecaseswitchdefaultdofor
Sprunganweisungen breakcontinuereturngoto
Typumwandlungen const_castdynamic_castreinterpret_cast
static_cast
Typsystem typeidtypename
Namensrume namespaceusing
Operatoren newdeletesizeofoperatorthis
Zugriffsschutz friendprivatepublicprotected
Funktionsattribute inlinevirtualexplicit
Generizitt templateAusnahmebehandlung catchthrowtry
Assemblercode asm
Tabelle: Schlsselwrter in C++
eben diesen Standard-Schlsselwrtern existieren noch andere reservierte Wrter, die alternativ zu ymbolen fr Operatoren (Operator-Symbole) verwendet werden knnen und in Abschnitt 3.5.3gefhrt sind.
.3 Schlsselwrter
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node21.htm (1 von 2) [10.09.2000 10:02:16]
http://-/?-http://d%7C/Coolhttp://d%7C/Coolhttp://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
47/621
orige Seite:3.2 BezeichnerEine Ebene hher:3 Lexikalische Elemente vonNchste Seite:3.4terale
) Thomas Strasser,dpunkt 1997
.3 Schlsselwrter
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node21.htm (2 von 2) [10.09.2000 10:02:16]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
48/621
orige Seite:3.3 SchlsselwrterEine Ebene hher:3 Lexikalische Elemente vonNchste Seite:anze Zahlen
3.4 Literaleterale sind Zahlen, Wahrheitswerte oder Zeichenketten im Programmtext. So wie alle anderen Symnes Programms mssen auch sie nach bestimmten Regeln aufgebaut sein.
3.4.1 Ganze Zahlenq
3.4.2 Fliekommazahlenq
3.4.3 Zeichenq
3.4.4 Zeichenkettenq
3.4.5 Wahrheitswerteq
) Thomas Strasser,dpunkt 1997
.4 Literale
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node22.htm [10.09.2000 10:02:16]
http://-/?-http://-/?-mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://-/?-http://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
49/621
orige Seite:3.4 LiteraleEine Ebene hher:3.4 LiteraleNchste Seite:3.4.2 Fliekommazahlen
.4.1 Ganze Zahlenne ganze Zahl besteht aus einer Folge von Ziffern. Es wird zwischen Dezimal-, Oktal- undexadezimalzahlen unterschieden, wobei jede der Zahlen durch die (optionale) Angabe einesgenannten Suffixes noch genauer spezifiziert werden kann:
nteger-literal:
decimal-literalinteger-suffixopt
octal-literalinteger-suffixopt
hexadecimal-literalinteger-suffixopt
nteger-suffix:
unsigned-suffixlong-suffixopt
long-suffixunsigned-suffixopt
nsigned-suffix:one of
u U
ong-suffix:one of
l L
teger-Suffix bestimmt den Wertebereich einer Zahl genauer: Ein Suffix u beziehungsweise U bedeu die Zahl vorzeichenlos ist, l beziehungsweise L gibt an, da es sich um eine sehr groe Zahl (eingenannte long-Zahl) handelt.
ie einzelnen Zahlen im Detail:
Eine Dezimalzahl beginnt mit einer von 0 verschiedenen Ziffer, der eine beliebig lange Reihe Ziffern (auch 0) folgen kann:
decimal-literal:
nonzero-digit
q
.4.1 Ganze Zahlen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node23.htm (1 von 3) [10.09.2000 10:02:17]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
50/621
decimal-literaldigit
digit: one of
0 1 2 3 4 5 6 7 8 9
nonzero-digit: one of
1 2 3 4 5 6 7 8 9
Eine Oktalzahl beginnt mit der Ziffer 0, der eine Sequenz von Oktalziffern folgen kann:
octal-literal:
0
octal-literaloctal-digit
octal-digit: one of
0 1 2 3 4 5 6 7
q
Eine Hexadezimalzahl besteht aus einer Reihe von Hexadezimalziffern, denen die Sequenz 0xbeziehungsweise 0X vorangestellt ist:
hexadecimal-literal:
0x hexadecimal-digit
0X hexadecimal-digit
hexadecimal-literalhexadecimal-digit
hexadecimal-digit:one of
0 1 2 3 4 5 6 7 8 9
a b c d e f A B C D E F
q
nige Beispiele fr gltige Zahlen:
Ganze Dezimalzahlen 65123500001234567L987UL45ul
Oktalzahlen 02401077ULHexadezimalzahlen 0x1A0XFFFF0x1234567L
Ungltige Zahlen 081A0xG1234ulL00xa
.4.1 Ganze Zahlen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node23.htm (2 von 3) [10.09.2000 10:02:17]
http://d%7C/Coolhttp://d%7C/Cool -
7/28/2019 (eBook-German)C Programmieren Mit Stil
51/621
Die Verwendung von l zur Spezifikation von long-Zahlen sollte ausGrnden der Lesbarkeit (leicht zu verwechseln mit 1) unterbleiben. Es istbesser, L zu verwenden.
orige Seite:3.4 LiteraleEine Ebene hher:3.4 LiteraleNchste Seite:3.4.2 Fliekommazahlen
) Thomas Strasser,dpunkt 1997
.4.1 Ganze Zahlen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node23.htm (3 von 3) [10.09.2000 10:02:17]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
52/621
orige Seite:3.4.1 Ganze ZahlenEine Ebene hher:3.4 LiteraleNchste Seite:3.4.3 Zeichen
.4.2 Fliekommazahlenne Fliekommazahl besteht aus einer gebrochenen Zahl optional gefolgt von einem Exponenten (Eer genaue Aufbau ist wie folgt angegeben:
loating-literal:
fractional-constantexponent-partfloating-suffix
digit-sequenceexponent-partfloating-suffix
ractional-constant:
digit-sequenceopt . digit-sequence
digit-sequence .
xponent-part:
e signoptdigit-sequence
E signoptdigit-sequence
ign: one of
+ -
igit-sequence:
digit
digit-sequencedigit
loating-suffix:one of
f l F L
n Suffix f oder F bezeichnet - ebenso wie eine Zahl ohne Suffix- eine Fliekommazahl mit einfacenauigkeit. Ein Suffix l oder L gibt an, da die Fliekommazahl eine erhhte Genauigkeit aufweis
eispiele fr gltige Fliekommazahlen sind 3.141592, 10000., 3.0856782E16F,234567.89E-20L. Beispiele fr ungltige Fliekommazahlen sind 0x123.56, 45E+-23 oder
.4.2 Fliekommazahlen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node24.htm (1 von 2) [10.09.2000 10:02:17]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
53/621
2.345FL.
) Thomas Strasser,dpunkt 1997
.4.2 Fliekommazahlen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node24.htm (2 von 2) [10.09.2000 10:02:17]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected] -
7/28/2019 (eBook-German)C Programmieren Mit Stil
54/621
orige Seite:3.4.2 FliekommazahlenEine Ebene hher:3.4 LiteraleNchste Seite:3.4.4 Zeichenk
.4.3 Zeichenn Zeichen-Literal wird in einfache Hochkommas eingeschlossen angegeben. Zeichen-Literale umfasben den druckbaren Zeichen auch Steuerzeichen. Um diese (nicht druckbaren) Zeichen darzustellen,ne sogenannteEscape-Sequenz verwendet. EineEscape-Sequenz wird mit dem Zeichen \ (Backslashngeleitet und bestimmt ein Zeichen aus dem ASCII mittels einer oktalen oder hexadezimalen Zahl. Us Zeichen \ selbst darzustellen, wird \\ verwendet.
haracter-literal:
'c-char-sequence'
L'c-char-sequence'
-char-sequence:
c-char
c-char-sequencec-char
-char:
any member of the source character set except
the single-quote ', backslash \, or new-line charac
escape-sequence
scape-sequence:
simple-escape-sequence
octal-escape-sequence
hexadecimal-escape-sequence
imple-escape-sequence:one of
\' \" \? \\
\a \b \f \n \r \t \v
ctal-escape-sequence:
.4.3 Zeichen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node25.htm (1 von 2) [10.09.2000 10:02:18]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
55/621
\ octal-digit
octal-escape-sequenceoctal-digit
exadecimal-escape-sequence:
\x hexadecimal-digit
hexadecimal-escape-sequencehexadecimal-digit
eispiele fr Zeichen-Literale sind:
A' Zeichen A '0' Zeichen 0
\"' einfaches Hochkomma '"' doppeltes Hochkomma
\\' Backslash '\a' Alarmton
\b' Backspace '\f' Seitenvorschub
\n' Neue Zeile '\r' Wagenrcklauf
\t' Tabulator '\v' Vertikaltabulator
\x12' Zeichen mit ASCII-Wert 18 '\12' Zeichen mit ASCII-Wert 10
\xFE' Zeichen mit ASCII-Wert 254 '\062' Zeichen mit ASCII-Wert 50
++ untersttzt auch multilinguale Zeichenstze mit mehr als 256 Zeichen. Derartige Zeichen beginneund sind Teil eines sogenannten Wide Character Sets (Typ wchar_t).
orige Seite:3.4.2 FliekommazahlenEine Ebene hher:3.4 LiteraleNchste Seite:3.4.4 Zeichenk
) Thomas Strasser,dpunkt 1997
.4.3 Zeichen
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node25.htm (2 von 2) [10.09.2000 10:02:18]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
56/621
orige Seite:3.4.3 ZeichenEine Ebene hher:3.4 LiteraleNchste Seite:3.4.5 Wahrheitswerte
.4.4 Zeichenkettenn Zeichenketten-Literal ist eine (mglicherweise auch leere) Sequenz von Zeichen, die in doppelteochkommas eingeschlossen ist. Der Zeichenkette kann optional ein L vorangestellt werden, um eineichenkette mit Multilingual-Zeichen zu kennzeichnen.
tring-literal:
"s-char-sequenceopt"
L "s-char-sequenceopt"
-char-sequence:
s-char
s-char-sequence s-char
-char:
any member of the source character set except
the double-quote ", \\, or new-line character
escape-sequence
wei Dinge sind im Zusammenhang mit Zeichenketten zu beachten:
Zeichenketten-Literale werden automatisch vom System um ein Zeichen ,,verlngert``: Sie wedurch das Zeichen mit dem ASCII-Wert 0 abgeschlossen, das das Ende der Zeichenkettekennzeichnet. Die oben angefhrte Zeichenkette Hallo wird also vom Compiler als Folge vo
sechs Zeichen abgelegt, von denen das letzte das Zeichen 0x00 ist.
q
Ferner ist zu beachten, da aufeinanderfolgende Zeichenketten-Literale automatisch zu einemeinzelnen Literal verkettet werden. So wird die Sequenz"Hello" " " "world!"
automatisch zu"Hello world!"
verkettet.
q
eispiele fr Zeichenketten-Literale sind: "Hallo", "" (Leere Zeichenkette) oder "Ha \x41" (H
.4.4 Zeichenketten
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node26.htm (1 von 2) [10.09.2000 10:02:18]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
57/621
. Ein Beispiel fr eine wchar_t-Zeichenkette ist etwa L"Hallo", die durch die Zeichenfolge L'a', L'l', L'l', L'o', 0x00 reprsentiert wird.
) Thomas Strasser,dpunkt 1997
.4.4 Zeichenketten
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node26.htm (2 von 2) [10.09.2000 10:02:18]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected] -
7/28/2019 (eBook-German)C Programmieren Mit Stil
58/621
orige Seite:3.4.4 ZeichenkettenEine Ebene hher:3.4 Literale
.4.5 Wahrheitswerte
ahrheitswerte (Boolesche Werte,Boolean-Werte) umfassen die Werte ,,Wahr`` (true ) undFalsch``(false ).oolean-literal:
alse
rue
itBoolean-Werten werden logische Sachverhalte dargestellt.
) Thomas Strasser,dpunkt 1997
.4.5 Wahrheitswerte
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node27.htm [10.09.2000 10:02:19]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
59/621
orige Seite:3.4.5 WahrheitswerteEine Ebene hher:3 Lexikalische Elemente vonNchste Seite5.1 Operatoren
3.5 Operatoren und Begrenzerperatoren und Begrenzer sind einzelne Sonderzeichen beziehungsweise Sequenzen von Sonderzeicder reservierte Wrter mit vordefinierter Bedeutung. Operatoren bestimmen Aktionen, die aufogrammobjekte ausgefhrt werden knnen. Begrenzer wiederum trennen Symbole des Programmt
oneinander.
3.5.1 Operatorenq
3.5.2 Begrenzerq
3.5.3 Alternative Operatoren und Begrenzerq
3.5.4 Kommentareq
) Thomas Strasser,dpunkt 1997
.5 Operatoren und Begrenzer
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node28.htm [10.09.2000 10:02:19]
http://-/?-http://-/?-mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://-/?-http://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
60/621
http://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
61/621
http://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
62/621
orige Seite:3.5 Operatoren und BegrenzerEine Ebene hher:3.5 Operatoren und BegrenzerNceite:3.5.2 Begrenzer
) Thomas Strasser,dpunkt 1997
.5.1 Operatoren
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node29.htm (3 von 3) [10.09.2000 10:02:20]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected] -
7/28/2019 (eBook-German)C Programmieren Mit Stil
63/621
orige Seite:3.5.1 OperatorenEine Ebene hher:3.5 Operatoren und BegrenzerNchste Seite:3.lternative Operatoren und
.5.2 Begrenzeregrenzer trennen Symbole voneinander. C++ kennt die im folgenden angefhrten Begrenzer, wobeachten ist, da einige Symbole mehrfach belegt sind. So existieren zum Beispiel sowohl ein Operaals auch ein Begrenzer *.
er Strichpunkt; dient als Terminator einer Anweisung. Jeder gltige C++-Ausdruck (auch der leer
r mit einem Strichpunkt endet, wird als Anweisung interpretiert.as Komma, trennt die Argumente in einer Funktionsparameterliste.
= power(x, 12);
unde Klammern() fassen Ausdrcke zusammen, isolieren konditionale Ausdrcke und begrenzenunktionsparameterlisten:
= 3 * (b + c); // Umgehen der ueblichen Prioritaet
f (a < b) // Konditionaler Ausdruck
d = square(a); // Aufruf der Funktion "square"
ckige Klammern[] dienen zum Deklarieren von ein- und mehrdimensionalen Vektoren. Die eckiglammern sind in einem anderen Zusammenhang auch ein Operator (vergleiche Abschnitt 8.3), mit ektoren indiziert werden.
har str[30]; // ein Vektor von 30 Zeichen
tr[5] = 'a'; // Indizierung von str, Operator []
erDoppelpunkt: kennzeichnet eine mit einer Sprungmarke (einemLabel) versehene Anweisung.
..
tart: x = 0; // Sprungmarke start
..oto start; // Verzweigung zur Sprungmarke start
..
witch(a) {
case 1: // Sprungmarke 1 in switch
a++;
break;
case 7: // Sprungmarke 7 in switch
a = b;
.5.2 Begrenzer
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node30.htm (1 von 3) [10.09.2000 10:02:21]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
64/621
break;
case 39: // Sprungmarke 39 in switch
--a;
break;
default: // Sprungmarke default in switch
break;
}
..
eschweifte Klammern{} markieren Beginn und Ende eines Anweisungsblocks.
nt main()
...
if (x==0) {
..
}
..
lipsen sind drei unmittelbar aufeinanderfolgende Punkte ohne Whitespaces dazwischen. Siennzeichnen in der formalen Parameterliste einer Funktion eine variable Anzahl von Argumenten orgumente mit beliebigen Typen.
nmerkung: Als Whitespaces werden alle ,,Zwischenzeichen`` bezeichnet: Leerzeichen (Blank, Spacabulator (horizontal und vertikal), Zeilenvorschub und Seitenvorschub.
* Die Funktion "printf" hat eine beliebige Anzahl von
* Argumenten. Dies ist ihr Prototyp:
*/
nt printf (const char* __format, ...);
er Stern* in einer Variablendeklaration zeigt an, da ein Zeiger auf ein Objekt deklariert wird.
har* string; // Zeiger auf Variable des Typs char
nt** a; // Zeiger auf Zeiger auf int-Variable
asReferenzzeichen& in einer Variablendeklaration zeigt an, da ein Referenz-Objekt deklariert wir
har& ch; // char-Referenz
nt& a; // int-Referenz
as Gleichheitszeichen= trennt Variablendeklarationen von Initialisierungslisten. In der Parameterliner Funktion wiederum kennzeichnet das Gleichheitszeichen den Vorgabewert eines Parameters.
loat pi=3.14159265; // Initialisierung von pi
nt foo(int a=1); // a hat Vorgabewert 1
.5.2 Begrenzer
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node30.htm (2 von 3) [10.09.2000 10:02:21]
http://d%7C/Coolhttp://d%7C/Cool -
7/28/2019 (eBook-German)C Programmieren Mit Stil
65/621
Eine Initialisierung einer Variablen ist keine Zuweisung! Zuweisung undInitialisierung erfolgen zwar mit dem Symbol =, im ersten Fall handelt essich aber um den Begrenzer =, im zweiten Fall um den Operator =. EineInitialisierung erfolgt beim Anlegen einer Variable, whrend sich eine
Zuweisung immer auf ein bereits existierendes Objekt bezieht (mehr dazuin Abschnitt 11.7.1).
orige Seite:3.5.1 OperatorenEine Ebene hher:3.5 Operatoren und BegrenzerNchste Seite:3.
lternative Operatoren und
) Thomas Strasser,dpunkt 1997
.5.2 Begrenzer
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node30.htm (3 von 3) [10.09.2000 10:02:21]
http://-/?-mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htmhttp://-/?- -
7/28/2019 (eBook-German)C Programmieren Mit Stil
66/621
http://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htmhttp://-/?-http://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
67/621
orige Seite:3.5.2 BegrenzerEine Ebene hher:3.5 Operatoren und BegrenzerNchste Seite:3.5ommentare
) Thomas Strasser,dpunkt 1997
.5.3 Alternative Operatoren und
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node31.htm (2 von 2) [10.09.2000 10:02:21]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected] -
7/28/2019 (eBook-German)C Programmieren Mit Stil
68/621
orige Seite:3.5.3 Alternative Operatoren undEine Ebene hher:3.5 Operatoren und Begrenzer
.5.4 Kommentare
ommentare sind Anmerkungen im Programmtext, die fr den Leser des Programms bestimmt sind.ompiler ,,ignoriert`` sie und entfernt sie vor dem bersetzen des Programms in Maschinencode ausm Quelltext. In C++ gibt es zwei Mglichkeiten, Kommentare in den Quelltext einzufgen:
Einzeilige Kommentare: Die Zeichenfolge // leitet einen Kommentar ein, der sich bis zum Ender Zeile, in der er auftritt, erstreckt. Der Kommentar kann an beliebiger Stelle beginnen.
Kommentare ber mehrere Zeilen: Mit der Zeichenfolge /* beginnt ein Kommentar, der mit dersten darauffolgenden Zeichenpaar */ endet. Kommentare dieser Art knnen mehrere Zeilensein. Es ist allerdings nicht mglich, derartige Kommentare zu ,,schachteln`` (ein geschachteltKommentar ist ein Kommentar im Kommentar).
oo(c, d); // Ein einfacher C++-Kommentaroo(c, d); /* Ein Kommentar im C-Stil */
* // Auskommentieren von Codeteilen
oo(c,d); // Die C++-Kommentare werden
+a; // mit auskommentiert
/
* xy /* ab */*/ // Fehler! Geschachtelter Kommentar
// in C++ nicht moeglich, der // Kommentar ist nach "ab */" zu Ende.
Grundstzlich sind beide Arten von Kommentaren zulssig. Jedoch ist esblich, einzeilige Kommentare zu verwenden. Mehrzeilige Kommentarewerden zum Auskommentieren von Codeteilen benutzt.
.5.4 Kommentare
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node32.htm (1 von 2) [10.09.2000 10:02:22]
http://d%7C/Coolhttp://d%7C/Coolhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
69/621
) Thomas Strasser,dpunkt 1997
.5.4 Kommentare
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node32.htm (2 von 2) [10.09.2000 10:02:22]
mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected] -
7/28/2019 (eBook-German)C Programmieren Mit Stil
70/621
orige Seite:3.5.4 KommentareEine Ebene hher:C++ Programmieren mit StilNchste Seite:4ie Begriffe Definition
4 Einfache Deklarationen undBasisdatentypen
ieses Kapitel zeigt, wie in C++ auf einfache Art Variablen und Konstanten vereinbart werden. Fernerden die grundlegenden Datentypen von C++ (,,Basisdatentypen``) erlutert.
4.1 Die Begriffe Definition und Deklarationq
4.2 Basisdatentypen
4.2.1 Der Datentyp boolr
4.2.2 Die Datentypen char und wchar_tr
4.2.3 Die int-Datentypenr
4.2.4 Fliekommadatentypenr
4.2.5 Der Datentyp voidr
q
4.3 Aufzhlungstypenq
4.4 Deklaration von Konstantenq
) Thomas Strasser,dpunkt 1997
Einfache Deklarationen und
le:///D|/Cool Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node33.htm [10.09.2000 10:02:23]
http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htmhttp://-/?-http://-/?-http://-/?-http://-/?-http://-/?-mailto:[email protected]://d%7C/Coolhttp://d%7C/Coolmailto:[email protected]://-/?-http://-/?-http://-/?-http://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/node3.htmhttp://d%7C/Cool%20Stuff/old/ftp/preview/mysql/C++_Programmieren_mit_Stil/Cppbuch/cppbk41.htm -
7/28/2019 (eBook-German)C Programmieren Mit Stil
71/621
orige Seite:4 Einfache Deklarationen undEine Ebene hher:4 Einfache Deklarationen undNcheite:4.2 Basisdatentypen
4.1 Die Begriffe Definition undDeklaration
C++ mssen alle Objekte vor ihrer Verwendung deklariertwerden. Eine Deklaration gibt demompiler einen Namen (Bezeichner) bekannt und verbindet diesen Namen mit einem Typ. De