Bonjour à tous,
Je connais bien l'utilité d'avoir un Singleton (pour les gestionnaires etc...).
En revanche, je tombe régulièrement sur deux implémentations.
L'une :
Et l'autre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 template<class T> class CSingleton { public: T* GetInstance() { if(!m_pInstance) m_pInstance = new T(); return m_pInstance; } void Release() { if(m_pInstance) { delete m_pInstance; m_pInstance = 0; } } private: T* m_pInstance; };
Laquelle est préférable ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 template<class T> class CSingleton { public: T* GetInstance() { static T instance; return instance; } };
La première différence que je vois est qu'on a pas à gérer la destruction dans la second (l'instance statique étant détruite à l'arrête du programme). L'inconvénient étant qu'on ne contrôle pas le moment de la destruction.
Merci
Partager