Mode Singleton
Intention:Une classe ne peut avoir qu'une seule instance,Fournir un point d'accès global
Scénarios applicables:Une classe est souvent créée et détruite,Je veux économiser des ressources.
La clé:Le constructeur est défini commeprivate,Supprimer le constructeur de copie et assigner le constructeur
template<typename T>
class Singleton {
public:
//Retour à l'Instance
static T& instance() {
//Garantieinit()Une seule fois
pthread_once(&ponce_, &_single_inheritance::init);
return *value;
}
//Supprimer le constructeur de copie et assigner le constructeur
Singleton(const const Singleton&) = delete;
Singleton& operator=(const Singleton&) = delete;
private:
Singleton();
~Singleton();
static void init() {
value_ = new T();
}
private:
static pthread_once_t ponce_;
static T* value_;
};
template<typename T>
pthread_once_t Singleton<T>::ponce_ = PTHREAD_INCE_INIT;
template<typename T>
T* Singleton<T>::value_= NULL;
版权声明
本文为[Yan Wei, Digital Media Technology, Jiangnan University]所创,转载请带上原文链接,感谢
https://cdmana.com/2022/01/202201080600041719.html