Bonjour,
Pour un singleton, n'a-t-on pas intérêt à mettre toutes les fonctions
membres en static ?
L'appel à une fonction deviendrait alors
Singleton::fonction();
au lieu de
s = Singleton::getHandle(); s.fonction();
--
--------------------------------------------
Benoît Rousseau : roussebe at spray dot se
Jouez en programmant : http://realtimebattle.sourceforge.net/
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christophe Lephay
Benoit Rousseau wrote:
Bonjour, Pour un singleton, n'a-t-on pas intérêt à mettre toutes les fonctions membres en static ? L'appel à une fonction deviendrait alors Singleton::fonction();
au lieu de s = Singleton::getHandle(); s.fonction();
Non, car l'accès via des fonctions statiques se fait sans instance. Avec un singleton, tu as la garantie que les constructeurs et destructeurs de l'intance unique sont automatiquement appelés avant l'appel de ses fonctions membres et à la fin de sa durée de vie. C'est d'autant plus important quand les objets se référencent mutuellement, lorsuqu'il faut garantir des initialisations correctes.
Par ailleurs, un singleton étant un objet (une instance), tu peux le fournir en paramètre. Ce dernier point est intéressant si tu as plusieurs singleton d'une même hiérarchie (comme c'est le cas avec les flux standards, notemment).
Chris
Benoit Rousseau wrote:
Bonjour,
Pour un singleton, n'a-t-on pas intérêt à mettre toutes les fonctions
membres en static ?
L'appel à une fonction deviendrait alors
Singleton::fonction();
au lieu de
s = Singleton::getHandle(); s.fonction();
Non, car l'accès via des fonctions statiques se fait sans instance. Avec un
singleton, tu as la garantie que les constructeurs et destructeurs de
l'intance unique sont automatiquement appelés avant l'appel de ses fonctions
membres et à la fin de sa durée de vie. C'est d'autant plus important quand
les objets se référencent mutuellement, lorsuqu'il faut garantir des
initialisations correctes.
Par ailleurs, un singleton étant un objet (une instance), tu peux le fournir
en paramètre. Ce dernier point est intéressant si tu as plusieurs singleton
d'une même hiérarchie (comme c'est le cas avec les flux standards,
notemment).
Bonjour, Pour un singleton, n'a-t-on pas intérêt à mettre toutes les fonctions membres en static ? L'appel à une fonction deviendrait alors Singleton::fonction();
au lieu de s = Singleton::getHandle(); s.fonction();
Non, car l'accès via des fonctions statiques se fait sans instance. Avec un singleton, tu as la garantie que les constructeurs et destructeurs de l'intance unique sont automatiquement appelés avant l'appel de ses fonctions membres et à la fin de sa durée de vie. C'est d'autant plus important quand les objets se référencent mutuellement, lorsuqu'il faut garantir des initialisations correctes.
Par ailleurs, un singleton étant un objet (une instance), tu peux le fournir en paramètre. Ce dernier point est intéressant si tu as plusieurs singleton d'une même hiérarchie (comme c'est le cas avec les flux standards, notemment).