l’argument.
Un tel argument peut être transmis classiquement par valeur, par adresse ou par
référence. Avec la transmission par valeur, il y a recopie des valeurs des membres
donnée dans un emplacement local à la fonction appelée. Des problèmes peuvent surgir
dès lors que l’objet transmis en argument contient des pointeurs sur des parties
dynamiques. Ils seront réglés par l’emploi d’un « constructeur par recopie » (voir
chapitre suivant).
Bien que ce soit d’un usage plus limité, une fonction ordinaire peut également recevoir
un argument de type classe. Bien entendu, elle n’aura alors accès qu’aux membres
publics de cet argument. (À moins d’avoir été déclarée fonction amie, comme on le
verra dans le chapitre correspondant.)
Cas des fonctions membre fournissant un objet en retour
Une fonction membre peut fournir comme valeur de retour un objet du type de sa classe
ou d’un autre type classe (dans ce dernier cas, elle n’accédera bien sûr qu’aux
membres publics de l’objet en question). La transmission peut, là encore, se faire par
valeur, par adresse ou par référence.
La transmission par valeur implique une recopie qui pose donc les mêmes problèmes
que ceux évoqués ci-dessus pour les objets comportant des pointeurs sur des parties
dynamiques. Quant aux transmissions par adresse ou par référence, elles doivent être
utilisées avec beaucoup de précautions, dans la mesure où, dans ce cas, on renvoie
(généralement) l’adresse d’un objet alloué automatiquement, c’est-à-dire dont la durée
de vie coïncide avec celle de la fonction.
Autoréférence : le mot-clé this
Au sein d’une fonction membre, this représente un pointeur sur l’objet ayant appelé
ladite fonction membre.
Fonctions membre statiques
Lorsqu’une fonction membre a une action indépendante d’un quelconque objet de sa
classe, on peut la déclarer avec l’attribut static. Dans ce cas, une telle fonction peut
152
Précédent

- 153/398

Suivant