Zum Forum
Passwort vergessen?
Noch keinen Account?
lexikon
Hauptseite
Zufälliger Artikel
Diskussion
Diskussion : C-Plusplus
Links
Forum
Portale
Reisen
Versicherung
Inhaltsverzeichnis
Hauptmenü
Home
Editorial
Bildung
E-Learning
Fremdsprachen
Magazin
Wissen
Wörterbücher
Enzyklopädien
Expertendienste
Wissenswertes
Praktische Ratgeber
--------------------------
Biologie
Chemie
Computer
Film/ Theater
Geografie
Geschichte
Jura
Kunst
Literatur
Mathematik
Medizin
Musik
Philosophie
Physik/ Astronomie
Politik
Psychologie
Religionen
Sport
Umwelt
Wirtschaft
Reisen
Lexikon
Versicherung
Suchen
Schnellsuche
Suchmaschinen
Metasuchmaschinen
Webkataloge
News
Treffpunkt
Chat
Forum
Suche
Schnellsuche
Sitemap
Kontakt
Impressum
C-Plusplus
Stichpunkte
Allgemein
Vorlage:Falscher Titel C++ ist eine Programmiersprache für allgemeine Anwendungen und stellt Sprachmittel für abstrakte Datentypen sowie modulare
objektorientierte und strukturierte Programmierung zur Verfügung
generische
Namensräume
Ausnahmebehandlung
Inline-Funktionen
Überladen von Operatoren und Funktionsnamen
Referenzen
Templates (Schablonen)
Klassen mit Vererbung und virtuellen Funktionen
C++ basiert auf der Programmiersprache C wie in ISO/IEC 9899:1990 beschrieben. Zusätzlich zu den in C vorhandenen Möglichkeiten bietet C++ weitere Datentypen
"Verbergen") 1 Entstehungsgeschichte 2 Merkmale 3 Allgemeine Bewertung 3.1 Stärken 3.2 Schwächen 4 Hallo-Welt-Programm in C++ 5 Verwandtschaft mit C 6 Vergleich mit anderen Sprachen 7 In der Entwicklung befindliche Version 8 C++-Compiler 9 Literatur 10 Siehe auch 11 Weblinks [Bearbeiten]
Operatoren zur Freispeicherverwaltung und eine erweiterte Bibliothek. Inhaltsverzeichnis showTocToggle("Anzeigen"
Entstehungsgeschichte
C++ wurde von Bjarne Stroustrup ab 1979 bei AT&T entwickelt
Die Idee für eine neue Programmiersprache entstand dabei aus den Erfahrungen
die er während seiner Promotionsarbeit gesammelt hatte
Stroustrup fand die Sprache Simula hilfreich für die Entwicklung großer Software-Projekte
für praktische Anwendungen war sie aber zu langsam in der Ausführung
aber zu maschinennah und nicht geeignet für die Entwicklung großer Software-Projekte
Demgegenüber war die Sprache BCPL zwar schnell
den UNIX-Betriebssystemkern im Hinblick auf verteilte Programmierung analysieren zu müssen
sah er sich mit dem Problem konfrontiert
Als Stroustrup in den Bell-Laboratorien zu arbeiten begann
schnellen Code produzierte und einfach auf andere Plattformen zu portieren war
Mit den Erfahrungen aus seiner Promotion machte er sich daran
die Programmiersprache C um ein Klassenkonzept zu erweitern
weil C eine Vielzwecksprache war
für das die Sprache Simula-67 das primäre Vorbild war. Die Wahl fiel auf die Programmiersprache C
Als dem Betriebssystem UNIX beiliegende Sprache hatte C außerdem eine nicht unerhebliche Verbreitung
dann abgeleitete Klassen
Inline-Funktionen und Standard-Argumente
ein strengeres Typsystem
Zunächst fügte er der Sprache Klassen (mit Datenkapselung) hinzu
Während Stroustrup „C mit Klassen“ („C with Classes“) entwickelte (woraus später C++ wurde)
einen Compiler
schrieb er auch Cfront
der aus C mit Klassen zunächst C-Code als Zwischenresultat erzeugte
Die erste kommerzielle Version von Cfront erschien im Oktober 1985
1982 wurde C mit Klassen in C++ umbenannt
und eine andere Art von Kommentaren (//). 1985 erschien die erste Version von C++
da die Sprache damals noch nicht standardisiert war
änderbare Freispeicherverwaltung
Überladen von Funktionsnamen und Operatoren
Konstanten
Erweiterungen darin waren: virtuelle Funktionen
verbesserte Typüberprüfung
Referenzen
die eine wichtige Referenzversion darstellte
1989 erschien die Version 2.0 von C++
Neu darin waren Mehrfachvererbung
statische Elementfunktionen
konstante Elementfunktionen und die Erweiterung des Schutzmodells um protected
abstrakte Klassen
1990 erschien das Buch The Annotated C++ Reference Manual
das als Grundlage für den darauffolgenden Standardisierungsprozess diente
Ausnahmen
neuartige Typumwandlungen und boolesche Typen hinzugefügt. Im Zuge der Weiterentwicklung der Sprache C++ entstand auch eine gegenüber C erweiterte Standardbibliothek
Relativ spät wurden der Sprache Templates
Namensräume
die Ersatz für traditionelle C-Funktionen wie zum Beispiel printf und scanf bietet
Erste Ergänzung war die Stream-I/O-Bibliothek
Eine der wesentlichen Erweiterungen der Standardbibliothek kam später durch die Integration großer Teile der bei HP entwickelten Standard Template Library (STL) hinzu
Nach jahrelanger Arbeit wurde schließlich 1998 von der ISO die endgültige Fassung der Sprache C++ (ISO/IEC 14882:1998) genormt
2003 wurde die erste überarbeitete Version von ISO/IEC 14882:1998 verabschiedet (ISO/IEC 14882:2003)
Diese Revision ist lediglich eine Nachbesserung der Norm ISO/IEC 14882:1998 und sollte nicht mit der in Arbeit befindlichen Version verwechselt werden
Die nächste Version der Sprache C++ erscheint voraussichtlich noch in dieser Dekade. (s. in der Entwicklung befindliche Version) [Bearbeiten]
Merkmale
C++ unterstützt die folgenden Programmiertechniken: Prozedurale Programmierung Modulare Programmierung Strukturierte Programmierung Programmierung mit selbstdefinierten Datentypen (abstrakte Datentypen) Objektorientierte Programmierung (siehe auch Polymorphie (Vielgestaltigkeit)) Generische Programmierung mittels Templates. C++ ist somit eine so genannte "Multiparadigmen-Sprache"
die dem Programmierer sehr viele Freiheiten lässt. (Siehe Stärken und Schwächen) Siehe auch: Programmierparadigma
Entwurfsmuster
RAII [Bearbeiten]
Allgemeine Bewertung
[Bearbeiten]
Stärken
in die sich zum Beispiel nahtlos eine Garbage-Collection integrieren lässt Für große Projekte geeignet Weite Verbreitung Die Sprache ist nicht im Besitz einer Organisation (im Unterschied zu beispielsweise Java)
Die Erzeugung hocheffizienten Codes ist möglich. Sowohl maschinennahe als auch hochabstrakte Programmierung ist möglich. Sehr hohe Ausdrucksstärke und Flexibilität - Beispiel: die anpassbare Freispeicherverwaltung
Standardisierung durch die ISO Weitreichende Möglichkeiten für die Metaprogrammierung Kompatibilität mit C - Vorteil: Es steht eine breite Codebasis zur Verfügung. [Bearbeiten]
Schwächen
zum Beispiel der von C übernommene Präprozessor
Dateisystem-Verzeichnisse
zum Beispiel Threads
TCP/IP
Kompatibilität mit C - Nachteil: historischer Ballast muss mitgeschleppt werden
sowohl im Bezug auf Geschwindigkeit als auch auf Code-Größe. Zum Erlernen sind verhältnismäßig lange Einarbeitungszeiten erforderlich. Die vorhandene C++-Standardbibliothek deckt viele wichtige Erfordernisse nicht ab
die teilweise unnötig schwer verständliche C-Syntax. Die aktuellen Compiler (Stand: 2004) sind rückständig im Bezug auf die Umsetzung der ISO-Norm. Die aktuellen Compiler produzieren nicht immer optimalen Code
Deshalb besteht in diesen Bereichen eine eingeschränkte Portabilität über Betriebssystemgrenzen hinweg. [Bearbeiten]
Hallo-Welt-Programm
in C++
das eine Meldung auf dem Standardausgabemedium ausgibt: #include <iostream> int main() { std::cout << "Hallo Welt!" << std::endl; } Erläuterungen: Bei main handelt es sich um eine Funktion
Der folgende Quelltext stellt ein einfaches C++-Programm dar
genauer gesagt ist es die Hauptfunktion des gesamten Programmes
Die Funktion main ist in jedem C++-Programm vorhanden und wird nach dem Start des Programmes aufgerufen
dass das Ergebnis von main vom Typ int sein muss
Die C++-ISO-Norm schreibt vor
ist kein gültiges Programm im Sinne der C++-ISO-Norm (ISO-14882)
Ein Programm
bei dem das Ergebnis von main nicht vom Typ int ist
Die Funktion main ist die einzige Funktion
die – obwohl sie einen Wert zurückgibt – nicht die Anweisung "return" benötigt
Ohne die explizite Anweisung return gibt main den Wert 0 zurück
welcher dem Betriebssystem eine erfolgreiche Programabarbeitung anzeigt. [Bearbeiten]
Verwandtschaft mit C
C++ ist eine Erweiterung der Programmiersprache C gemäß dem Stand von 1990 (ISO/IEC 9899:1990
auch kurz C90 genannt)
C++ enthält C nach dem Stand C90 fast vollständig
beziehungsweise haben als C++-Programme eine etwas andere Bedeutung
Einige wenige C-Programme lassen sich zwar nicht ohne Weiteres als C++ kompilieren
die in der Praxis keine große Rolle spielen
Dabei handelt es sich aber um Sonderfälle
Die Kompatibilität mit C war eines der Hauptdesignziele bei der Entwicklung der Programmiersprache C++
Grund dafür war die weite Verbreitung von C
wird Kompatibilität mit C immer noch als eine der wichtigsten Eigenschaften von C++ angesehen
und daher C die verbreitetste Programmiersprache darstellt
Da C auch heute noch für praktisch jeden Prozessor verfügbar ist
Im Laufe der Entwicklung der beiden Sprachen gab es auch Rückwirkungen von C++ auf C
Beispielsweise wurden in C const sowie die Funktionsprototypen von C++ übernommen
Die letzten Änderungen an C fanden 1999 statt (ISO/IEC 9899:1999)
wenn man sich auf diesen C-Stand bezieht
Gemäß dem Ratifizierungsjahr 1999 spricht man
deshalb auch von C99
Ein Beispiel für darin eingeführte Spracherweiterungen sind die so genannten VLAs (engl. variable length array)
Aufgrund dieser Weiterentwicklung von C gibt es theoretisch mehr Inkompatibilitäten zwischen C und C++
Da es aber nicht viele C-Compiler gibt
hat dies keine große praktische Bedeutung
die C99 unterstützen
die neuen C99-Merkmale miteinzuarbeiten
Bei der in Arbeit befindlichen C++-Version wird u.a. daran gearbeitet
Einige C++-Compiler unterstützen C99-Neuerungen schon jetzt (z.B. der gcc). [Bearbeiten]
Vergleich mit anderen Sprachen
sind aber "intern" anders aufgebaut
Die Programmiersprachen Java und C# haben eine ähnliche Syntax wie C++
Java und C# sind praktisch nicht mehr kompatibel mit C
dass C++ über generische Sprachmerkmale (Templates) verfügt
Ein wesentlicher Unterschied zwischen diesen Sprachen und C++ besteht darin
Es gibt zwar in Java eine generischen Spracherweiterung und bei C# wird an ebensolcher (s. generischer Typ) gearbeitet (Stand: 2004)
die Entwicklung geht dort aber in eine etwas andere Richtung als bei C++
Gerade die generische Programmierung macht aber C++ zu einem mächtigen Programmierwerkzeug
Während die objektorientierte Programmierung in Java und C# als der Gipfel der vorhandenen Abstraktionsmechanismen angesehen wird
ist diese Art der Programmierung in C++ rückläufig
und zu Gunsten der Effizienz und der Minimierung des Ressourcenverbrauchs verzichtet man in vielen Fällen auf Polymorphie
dem Kernmechanismus der objektorientierten Programmierung
So werden tiefe Klassenhierarchieen vermieden
Auch in Punkto Wiederverwertbarkeit einmal kodierter Algorithmen übertreffen generische Techniken nach Meinung vieler Fachleute die objektorientierte Programmierung
Eiffel (Programmiersprache) [Bearbeiten]
Objective-C
Siehe auch: Simula
Smalltalk
In der Entwicklung befindliche Version
C++0x (manchmal auch C++200x) ist eine inoffizielle Abkürzung für die in der Entwicklung befindliche Version der Programmiersprache C++
dass dieser Standard bis spätestens 2009 fertig gestellt wird
dies ist jedoch nicht wirklich der Fall
Zwar scheint der Name anzudeuten
Es handelt sich lediglich um eine grobe Einschätzung des möglichen Erscheinungstermins. [Bearbeiten]
C++-Compiler
der C++ nahezu vollständig umsetzt; erzeugt hocheffizienten Code für Intel-Prozessoren; Kommandozeilencompiler Windows
wegen nahezu vollständiger Umsetzung der Sprache C++; die Nachfolgeversion Visual C++ 2005 Express (http://lab.msdn.microsoft.com/express/visualc/) ist z.Zt. (2004) kostenlos erhältlich (als Beta-Version) Windows Borland C++ Builder Grafisches Entwicklungswerkzeug zur einfachen und schnellen Anwendungsentwicklung; integrierte Entwicklungsumgebung; kann auch Pascal-Module (Delphi) kompilieren und debuggen; Weiterentwicklung nicht sichergestellt (Stand: September 2004) Windows Open Watcom (http://www.openwatcom.org/) Compiler und IDE mit Unterstützung älterer Plattformen
Compiler Kommentar Plattform Comeau's C++ Compiler (http://www.comeaucomputing.com/) Gilt als der Compiler
OS/2
Linux
zum Beispiel unter Linux in KDevelop oder Anjuta (http://anjuta.sourceforge.net/); unter Windows mit Dev-C++ Unix
Netware (Linux-Unterstützung in Arbeit) Pathscale (http://www.pathscale.com/ekopath.html) "neu" auf dem Markt
Windows
bisher noch ohne vollständige C++-Standardbibliothek DOS
Mac OS X
Windows (dort auch als MinGW) Intel C++ (http://www.intel.com/software/products/compilers/) Ebenfalls ein Compiler
der C++ vollständig umsetzt; unterstützt zum Beispiel auch export von Templates; Kommandozeilencompiler; kann über das Internet (http://www.comeaucomputing.com/tryitout/) ausprobiert werden verschiedene Plattformen g++ (http://gcc.gnu.org) Bestandteil von GCC; Kommandozeilencompiler; kann aber auch in integrierten Entwicklungsumgebungen ausgeführt werden
Linux Microsoft Visual C++ Verbreitetster Compiler unter Windows; empfohlen ist die Version 7.1 oder neuer
Linux Siehe auch: Kommandozeilen-Compiler
Soll laut c't sehr gut optimieren (Besser als ICC) Windows
Visuelle Programmierumgebung [Bearbeiten]
Literatur
ISBN 3-8273-1660-X
Addison-Wesley
Bjarne Stroustrup: Die C++ Programmiersprache
Grundkenntnisse zu C von Vorteil; sehr empfehlenswert Andrew Koenig
Barbara E
das Standardwerk zu C++
Addison-Wesley
hervorragendes Anfängerbuch
Pearson Studium
setzt ein tiefes Verständnis von C++ voraus; sehr empfehlenswert Nicolai M
ISBN 3-8266-1347-3
Moo: Intensivkurs C++
Vertiefung vorhandener C++-Kenntnisse; sehr empfehlenswert Andrei Alexandrescu: Modernes C++ Design - Generische Programmierung und Entwurfsmuster angewendet
zur Vertiefung bereits vorhandener C++-Kenntnisse; sehr empfehlenswert Scott Meyers: Mehr Effektiv C++ programmieren - 35 neue Wege zur Verbesserung ihrer Programme und Entwürfe
mitp
Vertiefung vorhandener C++-Kenntnisse; sehr empfehlenswert Herb Sutter: Exceptional C++
das Standardwerk zur C++-Metaprogrammierung
ISBN 3-8273-1305-8
ISBN 3-8273-1275-2
ISBN 3-8273-1711-8 (deutsch)
Addison-Wesley
ISBN 3-8273-7029-9
ein gewisses Grundverständnis zu Programmierung von Vorteil; sehr empfehlenswert Scott Meyers: Effektiv C++ programmieren - 50 Wege zur Verbesserung ihrer Programme und Entwürfe
Addison-Wesley
ISBN 3-8273-1771-1 Stanley B
Josuttis: Objektorientiertes Programmieren in C++
ISBN 3-8266-0811-9 Peter Prinz
Josee Lajoie: C++ Primer
mitp
ISBN 3-8266-0824-0 [Bearbeiten]
Lippman
mitp
Ulla Kirch-Prinz: C++ Lernen und professionell anwenden
Siehe auch
Boost C++-Programmierung bei Wikibooks (engl.) C++-Glossar C++-Standardbibliothek Templates (Schablonen) C++-Metaprogrammierung (siehe auch Metaprogrammierung) C++/CLI. RAII (resource acquisition is initialization) Escape-Sequenz [Bearbeiten]
Weblinks
internationale Interessengemeinschaft für C und C++ Die C++-Bibliothek von [[Boost (http://www.boost.org/)]] C++-Metaprogrammierung (http://boost-consulting.com/tmpbook/) Internetseite des GNU-C++-Compilers (http://gcc.gnu.org/) Hans Boehms Garbage-Collector für C++ (http://www.hpl.hp.com/personal/Hans_Boehm/gc/) C++ im Deutschen Software Entwickler Wiki (http://www.wikiservice.at/dse/wiki.cgi?SpracheCpp) Pathscale ECOPath-Compiler (http://www.pathscale.com/ekopath.html) bg:C Plus Plus ca:C plus plus cs:Cplusplus da:C plus plus en:C Plus Plus eo:C Plus Plus es:C más más et:C pluss pluss fi:C plus plus fr:C plus plus he:C Plus Plus it:C plus plus ja:C Plus Plus lt:C plius plius nl:Programmeertaal Cplusplus pl:C plus plus pt:C mais mais ro:C plus plus ru:Си плюÑ? плюÑ? sv:C Plus Plus tr:C artı artı uk:C Plus Plus zh:C++
deutsch C++-Forum (http://www.c-plusplus.de/forum)
C++ Online-Referenz (http://www.cppreference.com/)
deutsch Comeau's Online-Compiler (http://www.comeaucomputing.com/tryitout/)
englisch C++-Diskussionsgruppe (http://groups.google.de/groups?group=de.comp.lang.iso-c%2B%2B)
englisch Oft gestellte Fragen und Antworten (http://www.fmi.uni-konstanz.de/~kuehl/c++-faq/)
zum Kompilieren einfacher Programme per Web ACCU (http://www.accu.org/)
[X] Schliessen
Dieser Artikel basiert auf dem Artikel
C-Plusplus
aus der freien Enzyklopädie
wikipedia
und steht unter der
GNU Lizenz für freie Dokumentation
. In der wikipedia ist eine
Liste der Autoren
verfügbar.
Syntax von C-Sharp
Cholesterin
C64
Culpa in contrahendo
Chile
Ceratophyllaceae
Commelinaceae
Caryophyllaceae
Cucurbitaceae
[ Zurück ]
Inhalt Lexikon:
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
1
2
3
4
5
6
7
8
9
Chat
|
Lexikon
|
Reisen
|
Versicherung
|
Forum
|
Kontakt