Telecharger Cours

Cours de C++ : Concepts de base et programmation orientée objet

Introduction au cours de C++

Ce document pédagogique propose une étude structurée du langage C++, depuis ses fondements syntaxiques hérités du C jusqu'à ses concepts avancés de programmation orientée objet et de métaprogrammation. Conçu par Aurélien Esnard dans le cadre des enseignements de l'ENSERB, ce support de cours s'adresse aux étudiants désireux d'appréhender la rigueur de la programmation en C++.

Présentation générale et structure d'un programme

Le document débute par une introduction au langage C++ et à son mode de compilation. Il expose la structure type d'un projet informatique à travers la séparation classique entre les fichiers d'en-tête au format d'extension .h, qui contiennent la définition des classes, et les fichiers sources au format .cpp, qui implémentent le code des méthodes. Le point d'entrée de tout programme exécutable, la fonction principale main, fait l'objet d'exemples précis pour illustrer l'organisation des fichiers.

Les bases du langage C++

La deuxième partie met en lumière les évolutions apportées par rapport au langage C. Les prototypes de fonctions y sont formalisés avec un contrôle strict des types de paramètres. La déclaration des variables gagne en souplesse, s'affranchissant de l'obligation d'être placée exclusivement en début de bloc. Les structures de données évoluent également pour constituer des types à part entière sans nécessiter l'usage de typedef.

Le cours aborde ensuite en détail la gestion des arguments de fonctions. Sont ainsi comparés le passage par valeur, le passage par pointeur ou par adresse, et le passage par référence qui offre une alternative hybride et sécurisée. La surcharge de fonctions et l'utilisation de valeurs par défaut pour les arguments complètent cette section consacrée aux bonnes pratiques d'écriture de fonctions.

Programmation orientée objet : classes et objets

Le cœur du document traite de la programmation orientée objet (POO) à travers la notion fondamentale de classe. L'encapsulation y est présentée comme le moyen de regrouper données membres et fonctions membres. Le cours détaille la création et la destruction des objets, qu'elles soient réalisées de manière statique sur la pile ou de manière dynamique via les opérateurs new et delete.

Les constructeurs et destructeurs font l'objet d'une analyse approfondie. Le lecteur y découvrira le constructeur par défaut, la surcharge des constructeurs, l'utilisation des listes d'initialisation, ainsi que le rôle crucial du constructeur de copie et du destructeur. La protection des données est quant à elle régie par les mots-clés public, private et protected, permettant de structurer hermétiquement l'accès aux membres.

Concepts avancés et spécificités du C++

Les chapitres suivants s'attaquent aux mécanismes sophistiqués du langage. L'héritage simple et multiple permet de réutiliser et de spécialiser les comportements des classes, tandis que les classes virtuelles résolvent les ambiguïtés liées à l'héritage en diamant. Le polymorphisme, couplé à l'utilisation de fonctions virtuelles et de fonctions virtuelles pures, permet de concevoir des architectures logicielles extensibles et des classes abstraites.

Enfin, le document explore plusieurs spécificités avancées telles que la surcharge des opérateurs, les fonctions en ligne inline, les classes et fonctions amies friend, la gestion robuste des erreurs par le mécanisme des exceptions avec les blocs try et catch, ainsi que l'utilisation des templates pour la programmation générique de fonctions et de classes.

Questions fréquentes

Quel est l'auteur de ce document de cours ?

Ce cours a été rédigé par Aurélien Esnard dans le cadre des enseignements dispensés à l'ENSERB en informatique.

Quelles sont les principales différences entre structure et classe en C++ ?

La seule différence syntaxique réside dans la visibilité par défaut des membres : elle est publique pour les structures et privée pour les classes. Toutes deux bénéficient cependant des mêmes fonctionnalités orientées objet.

Comment gère-t-on le polymorphisme en C++ ?

Le polymorphisme repose sur l'utilisation du mot-clé virtual devant les fonctions membres des classes de base et dérivées, permettant une liaison dynamique lors de l'exécution.

Testez vos connaissances

Question 1

Quel mot-clé utilise-t-on pour déclarer une fonction virtuelle pure en C++ ?

  1. abstract
  2. virtual ... = 0
  3. pure
  4. override

Réponse correcte : virtual ... = 0

Explication : Une fonction virtuelle pure est déclarée en faisant suivre son prototype par l'expression =0, ce qui transforme également la classe en classe abstraite.

Question 2

Quelle est la visibilité par défaut des membres d'une classe en C++ ?

  1. public
  2. private
  3. protected
  4. friend

Réponse correcte : private

Explication : Par défaut, les membres d'une classe sont privés, contrairement aux structures dont les membres sont publics par défaut.

Question 3

Quel opérateur permet de libérer un objet alloué dynamiquement en C++ ?

  1. free
  2. dispose
  3. delete
  4. clear

Réponse correcte : delete

Explication : L'opérateur delete est associé à new pour détruire un objet créé dynamiquement et appeler son destructeur.





Download