(eBook-German)C Programmieren Mit Stil

Embed Size (px)

Citation preview

  • 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