Tout dépend de la sémantique que tu veux.
En règle général, pour les constantes, on passe les types primitifs par valeur et les objets par référence constante.
void function( int i, const Object& o );
Pour ce qui est du choix entre un pointeur nu et une référence, il vaut mieux toujours passer par une référence, ça te garanti que l'objet passé existe bien.
Pour ce qui est du retour, tout dépend de la sémantique.
Si tu renvoi une membre interne de ta classe et que celui-ci a pour volonté d'être modifié de l'extérieur, alors tu passeras une référence. Si c'est toujours une variable interne mais qu'il ne doit pas être modifié de l'extérieur, tu renverras une référence constante.
Si c'est une variable interne à ta méthode, alors tu renvois toujours par valeur (constante ou pas, ça n'a pas d'importance, sauf peut-être pour la lecture, mais perso je préfère pas. Ca laisse sous-entendre sans raison qu'on ne veut pas que la personne modifie cette valeur, alors qu'on s'en fout). Mais ne jamais renvoyer de référence à une variable interne à ta méthode ! C'est une variable temporaire qui sera détruite à la fin de la méthode.
Partager