Zerosquare (./3504) :
Folco > je suis très loin d'être spécialiste du C++, mais je vois comme ça : l'utilisation des pointeurs rend visible et accessible l'implémentation sous-jacente des objets, ce qui va à l'encontre des principes de développement orienté objet. En particulier, tu peux mettre le souk en manipulant mal le pointeur. D'où l'existence des références, qui permettent de transmettre "proprement" un objet modifiable à une méthode.
Évidemment en pratique, le compilo utilise le plus souvent des pointeurs pour implémenter les références, mais c'est quelque chose dont tu n'es pas censé te préoccuper si tu fais de l'objet pur.
Si tu veux cacher l'utilisation des pointeurs, un smart pointer peut être plus utile qu'une référence.
Folco (./3505) :
Et ok, pour e coup de la référence constante Kevin. Mais y a-t-il une différence au final avec un void Foo (BigObject* const bo); ?
La différence est que
const BigObject & s'utilise comme si c'était passé par valeur, alors qu'avec ta solution, il faut passer un pointeur explicitement (probablement en prenant l'adresse:
&monobjet), et l'implémentation de la fonction doit aussi utiliser du
-> partout. Mais comme code généré, ça devrait donner exactement la même chose, oui.