Folco (./229) :

Sinon, si vous êtes pas trop référence, vous codez alors en C++ avec des pointeurs plutôt, comme en C ? Je croyais que justement, ça faisait partie de ce que vous lui reprochiez, la gestion des pointeurs ? (moim'enfous, j'ai jamais été dérangé par les pointeurs
)
Plutôt pointeur car les références sont fixées une fois affectées.
Franchement plus je lis tes questions plus je me dis que tu devrais plutôt te mettre au Java pour commencer la POO pure.
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.:
// En Java, seule manière possible
Objet o = new Objet();
// En C++, manière équivalente
Objet *o = new Objet;
delete o;
// En C++, par référence
Objet &o = *(new Objet);
delete &o;
// En C++, sur la pile
Objet o;
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. 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!).
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.
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
