C++ est le langage de programmation compilé, sous de multiples paradigmes, la programmation orientée objet et générique, fonctions virtuelles, la surcharge des opérateurs et des fonctions, les références, les constantes, le contrôle du typage amélioré et les commentaires en fin de ligne.
Date de première version : 1985. Paradigme : générique, orienté objet, procédural. Auteur : Bjarne Stroustrup. Dernière version : C++23 (19 octobre 2024). Typage : statique, unsafe, nominatif. Normes : ISO/CEI 14882 :1998, ISO/CEI 14882 :2003, ISO/CEI 14882 :2011, ISO/CEI 14882 :2014, ISO/CEI 14882 :2017, ISO/IEC 14882 :2020, ISO/IEC 14882 :2024. Influencé par : C, Simula, Ada 83, Algol 68, CLU, ML. A influencé : Ada 95, C#, PHP, D, JavaScript, Java, X++, Rust. Implémentations : GNU Compiler Collection, LLVM Clang++, Microsoft Visual C++, Embarcadero C++ Builder. Site web : isocpp.org. Extension de fichier : cc, cpp, cxx, c, c++, h, hpp, hh, hxx et h++. La bibliothèque standard du C++ englobe la Standard Template Library (STL).
Langage C++ utilise les concepts.
- Création de classes ;
- Encapsulation ;
- Relations entre les classes :
- Composition de classes (composition dans un diagramme de classes),
- Association de classes (en) (association dans un diagramme de classes),
- Agrégation de classes (agrégation dans un diagramme de classes),
- Dépendance (dépendance dans un diagramme de classes),
- Héritage simple et multiple (héritage dans un diagramme de classes) ;
- Polymorphisme ;
- Abstraction ;
- Généricité ;
- Méta-programmation.
Les fonctionnalités ajoutées figurent
- Typage des « prototypes » de fonctions (repris dans ANSI C89) ;
- Surcharge des fonctions ;
- Déclarations reconnues comme instructions (repris dans C99) ;
- Opérateurs
newetdeletepour la gestion d'allocation mémoire ; - Type de données
bool(booléen) ; - Références;
- Variables et les fonctions membres
const(repris partiellement par C à la fin des années 1980) ; - Fonctions
inline(repris dans C99) ; - Paramètres par défaut dans les fonctions ;
- Référentiels lexicaux (espaces de noms) et l'opérateur de résolution de portée
::; - Classes, ainsi que tout ce qui y est lié : l'héritage, les fonctions membres, les fonctions membres virtuelles,
- Constructeurs et le destructeur ;
- Surcharge des opérateurs ;
- Template ;
- Gestion d'exceptions ;
- Identification de type pendant l'exécution (RTTI);
- Commentaire sur une ligne introduit par
//(existant dans BCPL, repris dans C99) ; - Références de rvalue
&&(C++11) ; - Déduction de type à la compilation via
auto(C++11) ; - Expressions constantes
constexpr(C++11) - Fonctions lambda (C++11, étendu dans tous les standards publiés depuis) ;
- Boucles for basées sur une plage (C++11, étendu en C++20) ;
- Modules via
import,exportetmodule(C++20) ; - Contraintes et concepts via
conceptetrequires(C++20) ; - Fonctions immédiates
consteval(C++20) ; - Coroutines (C++20) ;
Autres

