vecteur3d operator + (const vecteur3d & v, const vecteur3d & w)
Dans ce cas, la fonction peut certes être appelée avec des arguments effectifs constants.
Mais il ne faudra pas perdre de vue qu'elle peut aussi être appelée avec arguments
fournis sous forme d'expressions de type vecteur3d, voire avec des arguments d'un type
autre que vecteur3d, pour peu qu'il existe une conversion implicite appropriée (voir le
chapitre relatif aux conversions définies par l'utilisateur).
En revanche, il n’est pas possible de demander à operator + de transmettre son résultat
par référence, puisque ce dernier est créé dans la fonction même, sous forme d’un objet
de classe automatique. En toute rigueur, operator * pourrait transmettre son résultat
(float) par référence, mais cela n’a guère d’intérêt en pratique.
202
Dans ce cas, la fonction peut certes être appelée avec des arguments effectifs constants.
Mais il ne faudra pas perdre de vue qu'elle peut aussi être appelée avec arguments
fournis sous forme d'expressions de type vecteur3d, voire avec des arguments d'un type
autre que vecteur3d, pour peu qu'il existe une conversion implicite appropriée (voir le
chapitre relatif aux conversions définies par l'utilisateur).
En revanche, il n’est pas possible de demander à operator + de transmettre son résultat
par référence, puisque ce dernier est créé dans la fonction même, sous forme d’un objet
de classe automatique. En toute rigueur, operator * pourrait transmettre son résultat
(float) par référence, mais cela n’a guère d’intérêt en pratique.
202
