C++
C++ ist eine Programmiersprache für allgemeine Anwendungen und 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, Klassen, Ausnahmebehandlung, Templates (Schablonen), Namensräume, Inline-Funktionen, Überladen von Operatoren und Funktionsnamen, Referenzen, Operatoren zur Freispeicherverwaltung und eine erweiterte Bibliothek.
Entstehung
C++ wurde von Bjarne Stroustrup seit 1979 entwickelt, erste Anwendungen außerhalb der Forschung datieren vom Juli 1983, erste kommerzielle Systeme von 1985. Von einem einfachen "C mit Klassen", für das Simula-67 das primäre Vorbild war, entwickelte sich die Sprache von da an über mehrere Zwischenstufen zum heutigen, als weitgehend ausgereift geltenden Stand.
C++ ist seit 1998 von der ISO (ISO-14882) genormt. Die nächste ISO-C++-Norm wird voraussichtlich noch in dieser Dekade herausgegeben werden (C++0x).
Merkmale
Nach Stroustrup ermöglicht C++ die Programmierung nach folgenden Paradigmen:
- Prozedurale Programmierung
- Modulare Programmierung
- Strukturierte Programmierung
- Abstrakte Datentypen (Programmierung mit benutzerdefinierten Datentypen)
- Objektorientierte Programmierung
- Generische Programmierung mittels Templates.
Siehe auch: Entwurfsmuster, Metaprogrammierung, C++-Metaprogrammierung
Hallo-Welt-Programm in C++
Der folgende Quelltext stellt ein einfaches C++-Programm dar, das eine Meldung auf dem Standardausgabemedium ausgibt.
#include <iostream>
int main() { std::cout << "Hallo Welt!" << std::endl; return 0; // Rückgabewert ist 0 }
Die C++-ISO-Norm schreibt vor, dass das Ergebnis von main vom Typ int sein muss. Ein Programm, bei dem das Ergebnis von main nicht vom Typ int ist, ist kein gültiges Programm im Sinne der C++-ISO-Norm (ISO-14882).
Der Wert hinter dem Wort return gibt Informationen an den Aufrufer, in diesem Fall den Aufrufer des gesamten Programms, zurück. Der Wert 0 bedeutet per Konvention, dass der Programmablauf problemlos erfolgt ist. Wird der Rückgabewert bei der Funktion main nicht angegeben, dann ist dies gleichbedeutend damit, dass 0 zurückgegeben wird. Das folgende Programm macht also exakt das gleiche wie das obige:
#include <iostream>
int main() { std::cout << "Hallo Welt!" << std::endl; }
Auch hier erhält der Aufrufer des Programms als Ergebnis den Wert 0.
Verwandte Sprachen
C
C++ ist eine Erweiterung der Programmiersprache C gemäß dem Stand von 1990 (ISO/IEC 9899:1990, auch kurz C90 genannt). Es gab aber auch Rückwirkungen von C++ auf C, beispielsweise hat C die Funktionsprototypen von C++ übernommen.
Einige wenige C-Programme gemäß C90 lassen sich nicht ohne Weiteres als C++ kompilieren, bzw. haben als C++-Programme eine etwas andere Bedeutung. Dabei handelt es sich aber um Sonderfälle, die in der Praxis keine große Rolle spielen.
Die letzten Änderungen an C fanden 1999 statt. Gemäß dem Ratifizierungsjahr 1999 spricht man, wenn man sich auf diesen C-Stand bezieht, deshalb auch von C99. Ein Beispiel für darin eingeführte Spracherweiterungen sind die sogenannten VLAs.
Java und C#
Einen anderen Weg als C++ gehen Programmiersprachen wie Java und C#, die zu Gunsten eines konsistenteren Designs den Pfad der Kompatibilität zu C und C++ verlassen haben. Dabei diente Java und C# die Syntax, nicht jedoch die Semantik von C++, als Vorbild.
Objective-C
Einen alternativen Ansatz, die objektorientierte Programmierung in C zu integrieren, stellt Objective-C dar, das Smalltalks Klassen- und Objektbegriff auffasst und weiterentwickelt.
C++-Entwicklungswerkzeuge
- Einige C++-Compiler
- g++; Bestandteil von GCC (GNU Compiler Collection); Linux
- MinGW; g++ für Windows
- Microsoft Visual C++, Version 7.1 oder neuer empfohlen; Windows
- Intel C++; Windows
- Borland C++; Windows
- Open Watcom; Windows
- Visuelle Programmierumgebungen für C++
- Borland C++ Builder; Windows
- Kylix; Linux
- DevCpp; Windows und Linux
- Microsoft Visual C++, Version 7.1 oder neuer empfohlen; Windows
- KDevelop; Linux
- Qt-Designer; Linux
Literatur
- Bjarne Stroustrup: Die C++ Programmiersprache, Addison-Wesley, ISBN 3-8273-1660-X, das Standardwerk zu C++, Grundkenntnisse zu C von Vorteil; sehr empfehlenswert
- Andrew Koenig / Barbara E. Moo: Intensivkurs C++, Pearson Studium, ISBN 3-8273-7029-9, hervorragendes Anfängerbuch, 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-1305-8, zur Vertiefung bereits vorhandener C++-Kenntnisse; sehr empfehlenswert
- Scott Meyers: Mehr Effektiv C++ programmieren - 35 neue Wege zur Verbesserung ihrer Programme und Entwürfe, Addison-Wesley, ISBN 3-8273-1275-2, Vertiefung vorhandener C++-Kenntnisse; sehr empfehlenswert
- Herb Sutter: Exceptional C++, ISBN 3-8273-1711-8 (deutsch), Vertiefung vorhandener C++-Kenntnisse; sehr empfehlenswert
- Andrei Alexandrescu: Modernes C++ Design, mitp, ISBN 3-8266-1347-3, das Standardwerk zur C++-Metaprogrammierung, setzt ein tiefes Verständnis von C++ voraus; sehr empfehlenswert
- Nicolai M. Josuttis: Objektorientiertes Programmieren in C++, Addison-Wesley, ISBN 3-8273-1771-1
- Stanley B. Lippman, Josee Lajoie: C++ Primer, mitp, ISBN 3-8266-0811-9
Weblinks
- Oft gestellte Fragen und Antworten, englisch
- C++-Diskussionsgruppe, deutsch
- Comeau's Online-Compiler, zum Kompilieren einfacher Programme
- ACCU, internationale Interessengemeinschaft für C und C++
- Internetseite des GNU-C++-Compilers
- C++ im Deutschen Software Entwickler Wiki