C++ - Définition

Source: Wikipédia sous licence CC-BY-SA 3.0.
La liste des auteurs de cet article est disponible ici.

Fonctionnalités introduites par C++

On peut considérer que C++ « est du C » avec un ajout de fonctionnalités. Une remarque importante est à faire cependant : certains programmes syntaxiquement corrects en C ne le sont pas en C++.

Les fonctionnalités ajoutées sont :

  • les déclarations reconnues comme instructions (repris dans C99) ;
  • les opérateurs new et delete pour la gestion d'allocation mémoire ;
  • le type de données bool (booléen) ;
  • les références ;
  • le mot clé const pour définir des constantes (repris par C à la fin des années 1980) ;
  • les fonctions inline (repris dans C99) ;
  • les paramètres par défaut dans les fonctions ;
  • les référentiels lexicaux (Espace de noms) et l'opérateur de résolution :: ;
  • les classes, ainsi que tout ce qui y est lié : l'héritage, les fonctions membres, les fonctions membres virtuelles, les constructeurs et le destructeur ;
  • la surcharge des opérateurs ;
  • les templates ;
  • la gestion d'exceptions ;
  • l'identification de type pendant l'exécution (RTTI : run-time type identification) ;
  • le commentaire de fin de ligne introduit par « // » (existant dans BCPL, repris dans C99).

La compilation d'un programme en C++ effectue également un contrôle plus minutieux sur le typage.

La programmation orientée objet en C++

C++ utilise les concepts de la programmation orientée objet et permet entre autres :

La bibliothèque standard (C++ standard library)

La bibliothèque standard du C++ est en grande partie un sur-ensemble des fonctions disponibles dans la bibliothèque standard du C. Elle englobe la Standard Template Library (STL) qui met à la disposition du programmeur des outils puissants comme les collections (conteneurs) et les itérateurs.

À l'origine, la STL était une bibliothèque développée par Alexander Stepanov qui travaillait pour Hewlett-Packard. Dans la norme, celle-ci n'est pas appelée STL, car elle est considérée comme faisant partie de la bibliothèque standard du C++. Toutefois, beaucoup de personnes l'appellent encore de cette manière pour distinguer d'une part, les fonctions d'entrées/sorties comprises dans cette bibliothèque et, d'autre part, celles fournies par la bibliothèque C.

Comme en C, l'utilisation d'une bibliothèque se fait par l'intermédiaire de la directive #include (suivie du nom du fichier d'en-tête).

Le polymorphisme et les méthodes virtuelles en C++

Le polymorphisme est mis en œuvre à l'aide du mécanisme des méthodes virtuelles en C++. Lorsqu'une méthode virtuelle est appelée, l'implémentation de la méthode exécutée est choisie en fonction du type réel de l'objet. L'appel n'est donc résolu qu'à l'exécution, le type de l'objet ne pouvant pas - a priori - être connu à la compilation. Un mot clé est alors introduit : virtual. Ce mot clé est placé devant la déclaration de la méthode.

Le mot clé virtual, placé devant le prototype de la fonction, indique au compilateur que la fonction est susceptible d'être redéfinie dans une classe dérivée. Il suffit alors de dériver une classe et de définir une nouvelle fonction de même signature (même nom, paramètres compatibles - voir la notion de covariance). Ainsi l'appel de cette fonction sur un objet dont on ignore le type, mais accédé en tant qu'objet de la classe de base, pourra donner lieu à l'appel de la fonction définie dans la classe dérivée.

Il est généralement conseillé d'utiliser le mot clé virtual devant la déclaration du destructeur de la classe de base, afin que celui des sous-classes soit appelé également lorsque le programme utilise un pointeur d'instance de la classe de base au lieu d'un pointeur d'instance de la classe dérivée si et seulement si la classe de base peut être utilisée pour manipuler des classes dérivées.

Il convient de ne pas confondre ce mécanisme avec celui de surcharge. Dans le cas de la surcharge, le choix de la fonction à appeler s'effectue sur le nombre et le type des paramètres : l'appel est donc résolu dès la compilation.

Page générée en 0.050 seconde(s) - site hébergé chez Contabo
Ce site fait l'objet d'une déclaration à la CNIL sous le numéro de dossier 1037632
A propos - Informations légales | Partenaire: HD-Numérique
Version anglaise | Version allemande | Version espagnole | Version portugaise