Brunni (./237) :
Déjà en Java tu ne passes pas les paramètres par référence, mais toujours par valeur, ce qui te garantit l'absence d'effet de bord comme celui de ta fonction Fibonacci.
Ensuite les objets sont toujours des références, i.e.:
Conclusion: quand tu appelles une fonction y'a plein de trucs qui ne sont pas passés par référence.
Cherche la contradiction dans ton post ^^
En C++ en général tu vas utiliser des pointeurs lorsque les objets sont alloués dynamiquement et partagés dans tout le programme.
J'aurai plutôt dit, quand tu as des objets dynamiques (que l'allocation soit dynamique on s'en fout) et que le pointeur NULL est une valeur utile pour ton programme. Sinon, perso je met des références partout où je peux éviter de mettre des pointeurs (et où, évidemment, je ne peux pas mettre de variable/champ qui ne soit ni une référence ni un pointeur)
Tu vas utiliser des objets sur la pile lorsqu'ils sont locaux et lorsqu'ils ne sont pas trop coûteux à manipuler (chaque passage par paramètre implique une copie de l'objet
!).
Justement non, pas si tes fonctions ont été bien foutues et prennent des valeurs en référence (les const & qui ont l'air si chères à aze).
Quant aux références en général tu ne les utilises que dans des cas particuliers, puisqu'un objet alloué sur la pile va être détruit automatiquement à la fin de la fonction qui te l'a fourni. Du coup tu ne peux pas garder l'objet pour plus tard, et ton code ressemblera plus à de la prog procédurale. C'est pour ça que c'est surtout pour simplifier la syntaxe (éviter l'* et le ->) et éviter la copie (mauvaises performances) qu'on utilise ça.
Oh non, y'a aussi 2-3 autres petits trucs sympas. Par exemple tu es obligé d'allouer une référence, une fois et une seule, donc tu ne risques pas involontairement d'appeler une méthode sur un pointeur NULL ou autre chose de pire encore. Par contre, comme pour les pointeurs, tu peux innocemment exporter un objet local dans un autre endroit du programme, et invoquer le chaos, à l'aide de tes fidèles serviteurs papillons.
En C# les références se font avec le mot clé ref et on les utilise rarement, en Java elles n'existent pas. Donc c'est pour ça que ça ne sert à rien de trop chercher à les utiliser, car ça ne te sera pas vraiment utile pour la suite 
En C# les références ne sont pas des références, ce sont des
pointeurs sécurisés (l'implémentation bas niveau a un nom à la con faut que je retrouve). Ça veut dire que tu as bien accès à une case mémoire à une certaine adresse, mais tu ne connais pas l'adresse, tu peux juste y lire et/ou y écrire. Malgré ça, c'est vraiment pratique, et... on s'en sert. (PS: un
ref MaClasse truc en C# c'est l'équivalent d'un
MaClasse **truc en C++)
Mais on a aussi des vrais pointeurs (des pointeurs "natifs") qui te permettent de faire tout et n'importe quoi de manière non [simplement] vérifiable
