next up previous contents
Next: Allocation Up: Références Previous: Retourner une référence

Héritage et les initialisation dans les classes

Dans tous les cas, le passage des paramètres en C++ est un passage par valeur, mais comme cette valeur peut être une référence c'est-à-dire une adresse. Il y a donc dans tous les cas copie des paramètres. En C++, une classe peut définir des opérateurs de conversion ou de copie ; dans le cas d'un passage d'un objet, on fera appel à ces opérateurs puisqu'il y a copie de l'objet, et donc la copie n'est pas toujours une simple recopie d'une zone de la mémoire.

Par contre pour une adresse d'objet (et donc pour une référence), on n'utilisera pas les opérateurs de copie de l'objet, mais éventuellement la conversion des pointeurs qui permet la liaison dynamique des fonctions membres virtuelles.

L'existence de ces ``copies'' différentes suivant que l'on a un objet ou une adresse d'objet peut être importante en ce qui concerne les performances: il ne faut pas oublier que l'opérateur de copie de la classe est utilisé pour chaque passage de paramètre d'un objet de la classe et aussi pour chaque valeur retournée par une fonction. Par contre, la conversion éventuelle d'adresse, qui peut avoir lieu lors d'un passage d'une adresse (et donc d'une référence) ou dans le retour d'une adresse par une fonction, ne coûte quasiment rien (au plus un décalage).




Mon Oct 20 14:02:48 MET 1997