OVH Cloud OVH Cloud

Singleton et objets statiques

1 réponse
Avatar
Benoit Rousseau
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/

1 réponse

Avatar
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