Cours langage C++ surcharge des opérateurs

1Eléments préalables
1.1 Placement des déclarations de variables
1.2 Booléens
1.3 Références
1.3.1 Notion
1.3.2 Références paramètres des fonctions
1.3.3 Fonctions renvoyant une référence
1.3.4 Références sur des données constantes
1.3.5 Références ou pointeurs?
1.4 Fonctions en ligne
1.5 Valeurs par défaut des arguments des fonctions
1.6 Surcharge des noms de fonctions
1.7 Appel et définition de fonctions écrites en C
1.8 Entrées-sorties simples
1.9 Allocation dynamique de mémoire
2 Classes
2.1 Classes et objets
2.2 Accès aux membres
2.2.1 Accès aux membres d’un objet
2.2.2 Accès a ses propres membres, accès a soi-meme
2.2.3 Membres publics et privés
2.2.4 Encapsulation au niveau de la classe
2.2.5 Structures
2.3 Définition des classes
2.3.1 Définition séparée et opérateur de résolution de portée
2.3.2 Fichier d’en-tete et fichier d’implémentation
2.4 Constructeurs
2.4.1 Définition de constructeurs
2.4.2 Appel des constructeurs
2.4.3 Constructeur par défaut
2.4.4 Constructeur par copie (clonage)
2.5 Construction des objets membres
2.6 Destructeurs
2.7 Membres constants
2.7.1 Données membres constantes
2.7.2 Fonctions membres constantes
2.8 Membres statiques
2.8.1 Données membres statiques
2.8.2 Fonctions membres statiques
2.9 Amis
2.9.1 Fonctions amies
2.9.2 Classes amies
3 Surcharge des opérateurs
3.1 Principe
3.1.1 Surcharge d’un opérateur par une fonction membre
3.1.2 Surcharge d’un opérateur par une fonction non membre
3.2 Quelques exemples
3.2.1 Injection et extraction de données dans les °ux
3.2.2 Affectation
3.3 Opérateurs de conversion
3.3.1 Conversion vers un type classe
3.3.2 Conversion d’un objet vers un type primitif
4Héritage
4.1 Classes de base et classes dérivées
4.2 Héritage et accessibilité des membres
4.2.1 Membres protégés
4.2.2 Héritage privé, protégé, public
4.3 Redéfinition des fonctions membres
4.4 Création et destruction des objets dérivés
4.5 Récapitulation sur la création et destruction des objets
4.5.1 Construction
4.5.2 Destruction
4.6 Polymorphisme
4.6.1 Conversion standard vers une classe de base
4.6.2 Type statique, type dynamique, généralisation
4.7 Fonctions virtuelles
4.8 Classes abstraites
4.9 Identification dynamique du type
4.9.1 L’opérateur dynamic cast
4.9.2 L’opérateur typeid
5Modèles (templates)
5.1 Modèles de fonctions
5.2 Modèles de classes
5.2.1 Fonctions membres d’un modèle
6 Exceptions
6.1 Principe et syntaxe
6.2 Attraper une exception
6.3 Déclaration des exceptions qu’une fonction laisse échapper
6.4 La classe exception

Eléments préalables

Ce document est le support du cours sur le langage C++, considéré comme une extension de C, langage présumé bien connu.
Attention, la présentation faite ici est déséquilibrée : des concepts importants ne sont pas expliqués, pour la raison qu’ils sont réalisés en C++ comme en C, donc supposés acquis. En revanche, nous insistons sur les différences entre C et C++ et notamment sur tous les éléments  orientés objets  que C++ ajoute aC.
Cette première section expose un certain nombre de notions qui, sans etre directement liés a la méthodologie objets, font déja apparaitre C++ comme une amélioration notable de C.

Placement des déclarations de variables
En C les déclarations de variables doivent apparaitre au début d’un bloc. En C++, au contraire, on peut mettre une déclaration de variable partout ou on peut mettre une instruction.
Cette différence parait mineure, mais elle est importante par son esprit. Elle permet de repousser la 1 déclaration d’une variable jusqu’a l’endroit du programme ou l’on dispose d’assez éléments pour l’initialiser.
On lutte aussi contre les variables déja déclarées mais non encore initialisées  qui sont un important vivier de bugs dans les programmes.
Exemple, l’emploi d’un ¯chier. Version C :
{
FILE *fic;

obtention de nomFic, le nom du ¯chier µa ouvrir
Danger ! Tout emploi de fic ici est erroné

fic = fopen(nom, « w »);

ici, l’emploi de fic est légitime

}
Version C++ :
{

obtention de nomFic, le nom du fichier a ouvrir
ici pas de danger d’utiliser fic a tort

FILE *fic = fopen(nom, « w »);

ici, l’emploi de fic est légitime

}

Booléens
En plus des types définis par l’utilisateur (ou classes, une des notions fondamentales de la programmation orientée objets) C++ possµede quelques types qui manquaient a C, notamment le type booléen et les types références.
Le type bool (pour booléen) comporte deux valeurs : false et true. Contrairement aC:
*le résultat d’une opération logique (&&, ||, etc.) est de type booléen,
* la ou une condition est attendue on doit mettre une expression de type booléen et
*il est déconseillé de prendre les entiers pour des booléens et réciproquement.
Conséquence pratique : n’écrivez pas if (x) …  au lieu de  if (x != 0) … 

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Cours le langage C++ surcharge des opérateurs (310 KO) (Cours PDF)
surcharge des opérateurs

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *