Bonjour, allez il faut que je progresse, il FAUT que j'arrive à comprendre
le principe des refcounts. J'ai eu beau lire quelques articles et voir même
mettre mon nez dans je ne sais plus quel template ANSI je n'arrive pas à
comprendre quelle magie se cache derrière...
Pourriez-vous me donner une ou deux pistes, je suis sur que le déclic va se
produire ;-)
Par piste, ça peut aussi être un lien vers un site francophone.
C'est un 'pointeur intelligent', on le charge de la destruction de l'objet créé et de la désallocation de la mémoire lorsqu'il le faut.
Ah, je vois bien là... Ca voudrait dire, par exemple, que si des objets dont le scope est une méthode (locaux) sont alloués dynamiquement (par new) je n'aurais pas besoin de faire de delete avant de sortir de la méthode (ou fonction) ?
Oui c'est ça. C'est le destructeur du pointeur intelligent qui, quand il verra que son refcount est à 0 après l'avoir décrémenté, prendra la décision de faire delete. --
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de templates ? Si la gestion des références est dans une classe de base dont tout le monde hérite...
Michaël Monerau - cort@meloo.com :
Zouplaz wrote:
C'est un 'pointeur intelligent', on le charge de la destruction de
l'objet créé et de la désallocation de la mémoire lorsqu'il le faut.
Ah, je vois bien là... Ca voudrait dire, par exemple, que si des
objets dont le scope est une méthode (locaux) sont alloués
dynamiquement (par new) je n'aurais pas besoin de faire de delete
avant de sortir de la méthode (ou fonction) ?
Oui c'est ça. C'est le destructeur du pointeur intelligent qui, quand
il verra que son refcount est à 0 après l'avoir décrémenté, prendra la
décision de faire delete.
--
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de
templates ? Si la gestion des références est dans une classe de base dont
tout le monde hérite...
C'est un 'pointeur intelligent', on le charge de la destruction de l'objet créé et de la désallocation de la mémoire lorsqu'il le faut.
Ah, je vois bien là... Ca voudrait dire, par exemple, que si des objets dont le scope est une méthode (locaux) sont alloués dynamiquement (par new) je n'aurais pas besoin de faire de delete avant de sortir de la méthode (ou fonction) ?
Oui c'est ça. C'est le destructeur du pointeur intelligent qui, quand il verra que son refcount est à 0 après l'avoir décrémenté, prendra la décision de faire delete. --
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de templates ? Si la gestion des références est dans une classe de base dont tout le monde hérite...
Laurent DELEPINE
Zouplaz wrote:
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de templates ? Si la gestion des références est dans une classe de base dont tout le monde hérite...
C'est faisable, mais tellement plus restrictif que les templates, pourquoi s'en passer.
A+
LD
Zouplaz wrote:
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de
templates ? Si la gestion des références est dans une classe de base dont
tout le monde hérite...
C'est faisable, mais tellement plus restrictif que les templates,
pourquoi s'en passer.
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de templates ? Si la gestion des références est dans une classe de base dont tout le monde hérite...
C'est faisable, mais tellement plus restrictif que les templates, pourquoi s'en passer.
A+
LD
kanze
Laurent DELEPINE wrote in message news:<3f8ffe4f$0$27589$...
Zouplaz wrote:
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de templates ? Si la gestion des références est dans une classe de base dont tout le monde hérite...
C'est faisable, mais tellement plus restrictif que les templates, pourquoi s'en passer.
Ce n'est pas tellement une question des restrictions -- la plupart des pointeurs comptés exige bien qu'on hérite d'une classe spéfique de base pour être compté -- c'est plus sûr. En revanche, avoir toujours un RefCntObj* qu'il faut convertir, ça n'améliore pas la sécurité.
Les templates, c'est surtout pour exprimer les prédicates vis-à-vis du système de typage. Si dans un pointeur donné, tu ne veux pointer que vers les MaClasse, les templates, c'est la façon à s'assurer que c'est le cas, lors de la compilation.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Laurent DELEPINE <newsgroup@webiologie.org> wrote in message
news:<3f8ffe4f$0$27589$626a54ce@news.free.fr>...
Zouplaz wrote:
Et est-ce qu'on peut définir un comportement de ce type sans
utiliser de templates ? Si la gestion des références est dans une
classe de base dont tout le monde hérite...
C'est faisable, mais tellement plus restrictif que les templates,
pourquoi s'en passer.
Ce n'est pas tellement une question des restrictions -- la plupart des
pointeurs comptés exige bien qu'on hérite d'une classe spéfique de base
pour être compté -- c'est plus sûr. En revanche, avoir toujours un
RefCntObj* qu'il faut convertir, ça n'améliore pas la sécurité.
Les templates, c'est surtout pour exprimer les prédicates vis-à-vis du
système de typage. Si dans un pointeur donné, tu ne veux pointer que
vers les MaClasse, les templates, c'est la façon à s'assurer que c'est
le cas, lors de la compilation.
--
James Kanze GABI Software mailto:kanze@gabi-soft.fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Laurent DELEPINE wrote in message news:<3f8ffe4f$0$27589$...
Zouplaz wrote:
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de templates ? Si la gestion des références est dans une classe de base dont tout le monde hérite...
C'est faisable, mais tellement plus restrictif que les templates, pourquoi s'en passer.
Ce n'est pas tellement une question des restrictions -- la plupart des pointeurs comptés exige bien qu'on hérite d'une classe spéfique de base pour être compté -- c'est plus sûr. En revanche, avoir toujours un RefCntObj* qu'il faut convertir, ça n'améliore pas la sécurité.
Les templates, c'est surtout pour exprimer les prédicates vis-à-vis du système de typage. Si dans un pointeur donné, tu ne veux pointer que vers les MaClasse, les templates, c'est la façon à s'assurer que c'est le cas, lors de la compilation.
-- James Kanze GABI Software mailto: Conseils en informatique orientée objet/ http://www.gabi-soft.fr Beratung in objektorientierter Datenverarbeitung 11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16
Laurent DELEPINE
wrote:
Laurent DELEPINE wrote in message news:<3f8ffe4f$0$27589$...
Zouplaz wrote:
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de templates ? Si la gestion des références est dans une classe de base dont tout le monde hérite...
C'est faisable, mais tellement plus restrictif que les templates, pourquoi s'en passer.
Ce n'est pas tellement une question des restrictions -- la plupart des pointeurs comptés exige bien qu'on hérite d'une classe spéfique de base pour être compté -- c'est plus sûr. En revanche, avoir toujours un RefCntObj* qu'il faut convertir, ça n'améliore pas la sécurité.
Il est vrai que j'interface beaucoup mes applications avec des librairies C, et que je dois compter les references de pointeurs crées par ses librairies, donc pas d'heritage possible pour ces pointeurs.
A+
LD
kanze@gabi-soft.fr wrote:
Laurent DELEPINE <newsgroup@webiologie.org> wrote in message
news:<3f8ffe4f$0$27589$626a54ce@news.free.fr>...
Zouplaz wrote:
Et est-ce qu'on peut définir un comportement de ce type sans
utiliser de templates ? Si la gestion des références est dans une
classe de base dont tout le monde hérite...
C'est faisable, mais tellement plus restrictif que les templates,
pourquoi s'en passer.
Ce n'est pas tellement une question des restrictions -- la plupart des
pointeurs comptés exige bien qu'on hérite d'une classe spéfique de base
pour être compté -- c'est plus sûr. En revanche, avoir toujours un
RefCntObj* qu'il faut convertir, ça n'améliore pas la sécurité.
Il est vrai que j'interface beaucoup mes applications avec des
librairies C, et que je dois compter les references de pointeurs crées
par ses librairies, donc pas d'heritage possible pour ces pointeurs.
Laurent DELEPINE wrote in message news:<3f8ffe4f$0$27589$...
Zouplaz wrote:
Et est-ce qu'on peut définir un comportement de ce type sans utiliser de templates ? Si la gestion des références est dans une classe de base dont tout le monde hérite...
C'est faisable, mais tellement plus restrictif que les templates, pourquoi s'en passer.
Ce n'est pas tellement une question des restrictions -- la plupart des pointeurs comptés exige bien qu'on hérite d'une classe spéfique de base pour être compté -- c'est plus sûr. En revanche, avoir toujours un RefCntObj* qu'il faut convertir, ça n'améliore pas la sécurité.
Il est vrai que j'interface beaucoup mes applications avec des librairies C, et que je dois compter les references de pointeurs crées par ses librairies, donc pas d'heritage possible pour ces pointeurs.