Bonjour, je viens de lire dans un ancien fil (sur comp.lang.c++.moderated)
que les références n'existent pas à l'exécution (runtime) mais seulement au
moment de la compilation (compile time).
J'avais jamais vu les choses comme ça, et ça explique pourquoi il ne peut
pas y avoir de tableaux de références.
Bon, si c'est faux dites le moi.
Alors, si on peut pas avoir de tableau de références on est donc obligé
d'avoir des tableaux de pointeurs.
Par contre je n'ai jamais eu besoin d'utiliser des références pour du polymorphisme, j'ai toujours recourt aux pointeurs. Tu as un exemple d'utilisation ?
Je trouve les références bien adaptées aux passages de paramètres...
Pour ma part je m'en suis servi pour un moteur 3D (arbre composé de nodes), IA, animation (keyframing)... Tout se passe au runtime, en dynamique alors je ne vois pas trop comment faire tout ça avec des références.
Dans la mesure où l'objet est créé dynamiquement, il est forcément géré au plus bas par un pointeur. Par contre, rien n'empeche d'utiliser des références partout ailleurs. En fait, je trouve pas mal le principe consistant à encapsuler systématiquement les pointeurs et utiliser le plus possible objets et références...
C'est peut-être plus une question de style, mais c'est tout de même une propriété persistante des pointeurs que d'être source de bugs, alors autant les circonscrire le plus possible...
Chris
Jean-Marc Molina wrote:
Par contre je n'ai jamais eu besoin d'utiliser des références pour du
polymorphisme, j'ai toujours recourt aux pointeurs.
Tu as un exemple d'utilisation ?
Je trouve les références bien adaptées aux passages de paramètres...
Pour ma part je m'en suis servi pour un moteur 3D (arbre composé de
nodes), IA, animation (keyframing)... Tout se passe au runtime, en
dynamique alors je ne vois pas trop comment faire tout ça avec des
références.
Dans la mesure où l'objet est créé dynamiquement, il est forcément géré au
plus bas par un pointeur. Par contre, rien n'empeche d'utiliser des
références partout ailleurs. En fait, je trouve pas mal le principe
consistant à encapsuler systématiquement les pointeurs et utiliser le plus
possible objets et références...
C'est peut-être plus une question de style, mais c'est tout de même une
propriété persistante des pointeurs que d'être source de bugs, alors autant
les circonscrire le plus possible...
Par contre je n'ai jamais eu besoin d'utiliser des références pour du polymorphisme, j'ai toujours recourt aux pointeurs. Tu as un exemple d'utilisation ?
Je trouve les références bien adaptées aux passages de paramètres...
Pour ma part je m'en suis servi pour un moteur 3D (arbre composé de nodes), IA, animation (keyframing)... Tout se passe au runtime, en dynamique alors je ne vois pas trop comment faire tout ça avec des références.
Dans la mesure où l'objet est créé dynamiquement, il est forcément géré au plus bas par un pointeur. Par contre, rien n'empeche d'utiliser des références partout ailleurs. En fait, je trouve pas mal le principe consistant à encapsuler systématiquement les pointeurs et utiliser le plus possible objets et références...
C'est peut-être plus une question de style, mais c'est tout de même une propriété persistante des pointeurs que d'être source de bugs, alors autant les circonscrire le plus possible...
Chris
Jean-Marc Molina
Bonjour,
Je trouve les références bien adaptées aux passages de paramètres... En fait, je trouve pas mal le principe consistant à encapsuler systématiquement les pointeurs et utiliser le plus
possible objets et références...
En effet c'est justement pour ça que je me suis de plus en plus intéressé aux références, au détriment des pointeurs que j'ai commencé à oublier.
C'est peut-être plus une question de style, mais c'est tout de même une propriété persistante des pointeurs que d'être source de bugs, alors autant
les circonscrire le plus possible...
En effet mais le problème de ne se pose plus si on développen en ANSI C++ (STL et pointeurs intelligents). Je pourrais revoir mes projets et essayer d'y intégrer des références pour voir si c'est mieux, et possible (dans des cas plus complexes que l'exemple donné par Loïc). Par contre je préfère éviter de trop mélanger variables, références et pointeurs. On peut tout faire avec des pointeurs, mais peut-on tout faire avec des références ? Ma réponse est non d'après l'expérience que j'en ai eu. Utiliser des références auraient peut-être été possible mais les pointeurs étaient bien plus souples, encore une fois il me faudrait réessayer, ça fait déjà quelques années que j'ai rencontré le problème.
Merci pour vos remarques, JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Bonjour,
Je trouve les références bien adaptées aux passages de paramètres...
En fait, je trouve pas mal le principe
consistant à encapsuler systématiquement les pointeurs et utiliser le plus
possible objets et références...
En effet c'est justement pour ça que je me suis de plus en plus intéressé
aux références, au détriment des pointeurs que j'ai commencé à oublier.
C'est peut-être plus une question de style, mais c'est tout de même une
propriété persistante des pointeurs que d'être source de bugs, alors autant
les circonscrire le plus possible...
En effet mais le problème de ne se pose plus si on développen en ANSI C++
(STL et pointeurs intelligents).
Je pourrais revoir mes projets et essayer d'y intégrer des références pour
voir si c'est mieux, et possible (dans des cas plus complexes que l'exemple
donné par Loïc). Par contre je préfère éviter de trop mélanger variables,
références et pointeurs. On peut tout faire avec des pointeurs, mais peut-on
tout faire avec des références ? Ma réponse est non d'après l'expérience que
j'en ai eu. Utiliser des références auraient peut-être été possible mais les
pointeurs étaient bien plus souples, encore une fois il me faudrait
réessayer, ça fait déjà quelques années que j'ai rencontré le problème.
Merci pour vos remarques,
JM
--
Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Je trouve les références bien adaptées aux passages de paramètres... En fait, je trouve pas mal le principe consistant à encapsuler systématiquement les pointeurs et utiliser le plus
possible objets et références...
En effet c'est justement pour ça que je me suis de plus en plus intéressé aux références, au détriment des pointeurs que j'ai commencé à oublier.
C'est peut-être plus une question de style, mais c'est tout de même une propriété persistante des pointeurs que d'être source de bugs, alors autant
les circonscrire le plus possible...
En effet mais le problème de ne se pose plus si on développen en ANSI C++ (STL et pointeurs intelligents). Je pourrais revoir mes projets et essayer d'y intégrer des références pour voir si c'est mieux, et possible (dans des cas plus complexes que l'exemple donné par Loïc). Par contre je préfère éviter de trop mélanger variables, références et pointeurs. On peut tout faire avec des pointeurs, mais peut-on tout faire avec des références ? Ma réponse est non d'après l'expérience que j'en ai eu. Utiliser des références auraient peut-être été possible mais les pointeurs étaient bien plus souples, encore une fois il me faudrait réessayer, ça fait déjà quelques années que j'ai rencontré le problème.
Merci pour vos remarques, JM
-- Clé AntiPourriel : PASUNPOURRIEL (ne pas retirer)
Christophe Lephay
Jean-Marc Molina wrote:
On peut tout faire avec des pointeurs, mais peut-on tout faire avec des références ? Ma réponse est non d'après l'expérience que j'en ai eu.
Des références *ou* des objets. Il est possible de faire avec ces deux-là exactement tout ce que tu peux faire avec les pointeurs, en encapsulant bien ces derniers. Les pointeurs intelligents que tu cites en sont un exemple parmi d'autres. Notemment l'idiome enveloppe-lettre (Coplien) permet d'avoir des objets polymorphes (des objets, c'est à dire ni des pointeurs, ni des références). C'est un petit peu plus lourd à la conception, mais tu n'as plus aucun pointeur après ça dans le code utilisateur.
Chris
Jean-Marc Molina wrote:
On peut tout faire avec
des pointeurs, mais peut-on tout faire avec des références ? Ma
réponse est non d'après l'expérience que j'en ai eu.
Des références *ou* des objets. Il est possible de faire avec ces deux-là
exactement tout ce que tu peux faire avec les pointeurs, en encapsulant bien
ces derniers. Les pointeurs intelligents que tu cites en sont un exemple
parmi d'autres. Notemment l'idiome enveloppe-lettre (Coplien) permet d'avoir
des objets polymorphes (des objets, c'est à dire ni des pointeurs, ni des
références). C'est un petit peu plus lourd à la conception, mais tu n'as
plus aucun pointeur après ça dans le code utilisateur.
On peut tout faire avec des pointeurs, mais peut-on tout faire avec des références ? Ma réponse est non d'après l'expérience que j'en ai eu.
Des références *ou* des objets. Il est possible de faire avec ces deux-là exactement tout ce que tu peux faire avec les pointeurs, en encapsulant bien ces derniers. Les pointeurs intelligents que tu cites en sont un exemple parmi d'autres. Notemment l'idiome enveloppe-lettre (Coplien) permet d'avoir des objets polymorphes (des objets, c'est à dire ni des pointeurs, ni des références). C'est un petit peu plus lourd à la conception, mais tu n'as plus aucun pointeur après ça dans le code utilisateur.