C++ passage des paramètres d’une fonction

Le polymorphisme
concept très important en programmation et particulièrement en POO :
 du grec, signifie plusieurs (poly) formes (morphos)
 définition : un même nom représente plusieurs objets selon le contexte
 3 types de polymorphisme
 le polymorphisme ad hoc
 le polymorphisme d’héritage (Cf. cour 3)
 le polymorphisme paramétrique
 polymorphisme ad hoc ou surcharge (overloading) : définir plusieurs fonctions de même nom, chacune correspondant à des types de paramètres précis
Recherche fonction surchargée
Fonction à un argument : meilleure correspondance possible
1/ correspondance exacte
2/ promotions numériques
3/ conversions standard (dégradantes)
4/ conversions définies par l’utilisateur arrêt :
 au premier niveau où ∃ correspondance unique
 si à un même niveau plusieurs correspondances : erreur à la compilation (ambiguïté)
 si aucune fonction ne convient : erreur de compilation (fonction inconnue)
Fonctions à plusieurs arguments
1/ le compilateur sélectionne pour chaque argument la (ou les) meilleure(s) fonction(s)
2/ il considère l’intersection des ensembles des meilleures fonctions pour chaque argument Si cette intersection contient une seule fonction, c’est la fonction choisie sinon erreur de compilation Remarque : fonction avec un ou plusieurs arguments par défaut traitée comme plusieurs fonctions différentes avec un nombre croissant d’arguments
PASSAGE DES PARAMETRES D’UNE FONCTION
 en C :
 par défaut : passage par valeur
 argument modifié ou « gros objet » : passage par adresse,
i.e. passage par valeur d’un pointeur sur l’objet
 en C++ :
 par défaut : idem, passage par valeur
 argument modifié ou « gros objet » : passage par références
le compilateur prend en charge la transmission des arguments par adresse
l’utilisateur manipule une variable normal
 philosophie C++ : les ptr indiquent une indirection, pas des manipulations pour faire remonter des modifications vers le code appelant
passage par adresse (pointeur)
 avantage
l’utilisateur sait que le paramètre effectif peut être modifié car il passe un ptr à l’appel
contrôle des effets de bords indésirés
 inconvénients
lourdeur d’écriture, sources d’erreurs
l’utilisateur doit savoir qu’il faut passer un pointeur
 utilisation en C
paramètre modifié par une fonction
gros objet passé en paramètre pour éviter une copie
passage par référence
 avantage
 simplifie l’écriture : on manipule (à l’appel et dans la définition) le nom des variables, pas un ptr
 choix au moment de la définition, à l’appel rien à faire de spécial
 inconvénients
 risque d’effets de bord indésirés si l’utilisateur oublie que le paramètre peut être modifié
 essayer d’éviter les fonctions qui modifient leurs paramètres
 utilisation en C++ : remplace la passage de paramètre par adresse du C

Cours gratuitTélécharger le cours complet

Télécharger aussi :

Laisser un commentaire

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