Left Up Right Programmiersprachen

C++

Standard: ISO/IEC 14882

Informationen zum neuen Standard gibt es

isocpp.org
Nachrichten, Status und Diskussion über Standard C++ von der non profit Organisation Standard C++ Foundation aus Washingten/USA
Heise: C++23: Der neue C++-Standard ist fertig
nennt die historischen C++-Standards
Heise: Ausblick auf C++14
Working Draft, Standard for Programming Language C++ 28.2.2011
JTC1/SC22/WG21 - The C++ Standards Committee - ISOCPP
Wikipedia über C++0x
Bjarne Stroustrup: "A Brief Look at C++0x"
Bernhard Merkle: "Ausblick auf den neuen C++-Standard C++0x"
Apache C++ Standard Library Wiki
mit Überblick Compiler mit C++-0x

Links

Einordnung

Charakteristik

Mit C++ kann man Hardwarenah (Zeiger!) programmieren und gleichzeitig Abstraktionen aufbauen.
Es ist eine minimale Sprache
Es gibt nur ein minimales Laufzeitsystem
vgl C
dunkle Ecken
template-mechanismus
Ersatz von Präprozessor, mit dem großen Vorteil der Typprüfung
Nebenläufigkeit/Threads
es gehört nicht zur Sprache an sich, durch die leichtgewichtigkeit der Sprache kann man das in Bibliotheken machen. Die Implementierung des Exception-Mechanismus muß aber auf Koordinierungsmachanismen der Threadimplementierung aufbauen.

Einsatzzweck

Sprachkonstrukte

Es gibt einen Präprozessor

Im wesentlichen nutzt man diese um die Klassendefinnitionen zu den Implementierungen zu kombinieren, damit eine Implementierung mehrere Klassendefinitionen sehen kann. d.h. eine Klassendefinition wird mehrfach gelesen (Kritik!)
Die sonstigen Zwecke wir Macros usw. sind durch die templates,inline-funktionen und Konstantendeklarationen zurückgedrängt worden.

Der Präprozessor gehört eigentlich nicht zur Sprache selber, und kann auch für andere Zwecke eingesetzt werden.

Präprozessor Tutorial
Enumeration declaration

C++11

Blog Modernes C++
Modernes C++ in der Praxis
C++ Tutorial

Programmierbeispiele:

Aktives Objekt
Conditionvariable
Konstrukte
Enumeration declaration
Type Safe Enum
More C++ Idioms
Lambda Functions in C++11, auch "closure" genannt

C++20

Programmiersprache: Der Entwurf von C++20 ist abgeschlossen
C++ Draft auf GitHub

Bibliotheken

(Nur solche, die im weiteren Sinne zur Sprache hinzugehöhren)

libstdc++ vom gcc, implementiert auch die STL
Cathlib eine alte Implementierung für einen speziellen Cfront-Compiler.

STL

STL Standard Template Library
Es gibt hier Container, Iteratoren und Algorithmen auf Container
cplusplus.com: Standard C++ Library reference
stlport.org
Multi-Platform-Standard-Implementierung der Standard Template Library
Phil Ottewells STL-Tutorial
ein kurzer und knackiger Rundgang durch die STL
Streams
Beispiel Nutzung
The C++ Standard Library Tutorial
Threading
Lebenszeit von Threads
erklärt join und detach in der C++-11 API

Boost

Freie wiederverwendbare C++-Bibliotheken, die gut mit der STL zusammenarbeiten. Manche APIs werden standarisiert.

Die Boost C++-Bibliotheken sind eine Beschreibung

Insbesondere interessant ist:

Boost memory

Hier gibt es Alignment, Pool , ...

Thread
Chrono
Lockfree (LockFree)
Lookfree - Container
Date-Time
asio
asynchrone IO mit sockets
Lockfree (LockFree)
Lookfree - Container
UUID-Erzeugung

Links

C++-Programming Howto
beschreibt wichtige Aspekte der Programmierung mit C++ auf verschiedenen Architekturen, beschreibt Anlehnung an Java usw.
Yahoo zu C/C++
C++-Resources von accu.org, der Association der C/C++-Programmierer
C++.com
Hier gibt es ein Tutorial und viel hilfreiches zum Thema C++
C-Report ein kommerziellens C/C++-Portal
c++-faq-lite
scheint aus den News comp.lang.c++ zu kommen
C++ von Martin Kompf
hat eine Reihe interessanter Tutorials zu C++
Wikibook C++-Programmierung

Regeln für sicheres Programmieren

Hilfe zum Verständnis sprachlicher Konstrukte

Verstehen von C/C++-Typdeklarationen : C++ liest man von rechts nach links

Kleine Lektionen von Überraschungen

Hier werden Kuriositäten gesammelt, bei denen sich der jeweilige Autor gewundert hat: Weiteres zu Sprachkonstrukten:

C++ - Optimierungen:

Return Value Optimization
Bei Aufruf eines Konstruktors bei return werden keine Kopiervorgänge ausgeführt

Compiler

GCC GNU Compiler Collection
ein sehr portabler C++-Compiler (und andere)
Online Docs
Clang [WP]
modularer Compiler, geeignet für Entwicklungsumgebungen
baut auf LLVM

Internatas

C++ und CORBA

C++ war die erste Sprache, daher ist auch die IDL C++ ähnlich:
C++ _ Language Mapping

FAQ

Unterschied zwischen C/C++ ?
C++ unterstützt die objektorientierte Programmierung, d.h ein ganz anderes Programmierparadigma ...
Ist C++ langsamer als C ?
Nein, nicht unbedingt. Man muß aber sehr sorgfältig programmieren und die dunklen Ecken sehr gut kennen (z.B. Aufruf der Konstruktoren). (vgl auch Fiasco-FAQ)
Ich will C/C++ lernen ...
Es kommt auf das Anwendungsgebiet an. Wenn es nicht um System- oder Hardwarenahe Sachen geht, so ist Java meist besser geeignet.

Inspiration für Innovationen

OpenC++
Quelle zu Quelle Übersetzer zur Entwicklung von

Apologie

Sichere Programmiersprachen: Bjarne Stroustrup reagiert auf NSA-Empfehlung 23.1.2023
P2687R0

Informatik- und Netzwerkverein Ravensburg e.V Rudolf Weber