C++——Singleton 單例模式
阿新 • • 發佈:2021-10-27
轉載來自:https://www.cnblogs.com/ltimaginea/p/15400066.html
什麼是單例模式?
單例模式就是一個類只能被例項化一次 ,更準確的說是只能有一個例項化的物件的類。
實現要點:
建構函式應該宣告為非共有,從而禁止外界創造例項
拷貝操作和移動操作也應該被禁止掉
只能通過Singleton的公有特定類操作訪問它的唯一例項(C++中的一個共有靜態成員函式)
有區域性靜態物件和動態分配兩種實現,C++11起最佳時間的是區域性靜態物件的方法
執行緒安全
程式碼:
DMSingleton.h
#ifndef __DMSINGLETON__H__ #define __DMSINGLETON__H__ classSingleton { private: Singleton(); Singleton(const Singleton&) {}; // 防止拷貝構造另一個例項 Singleton& operator =(const Singleton&) {}; // 防止賦值構造出另一個例項 ~Singleton(); public: static Singleton* Instance(); static Singleton* m_pSingleton; void Test(); }; #endif//__DMSINGLETON__H__
DMSingleton.cpp
#include "DMSingleton.h" #include <iostream> Singleton* Singleton::m_pSingleton = NULL; Singleton::Singleton() { std::cout << "construction of Singleton.\n"; } Singleton::~Singleton() { std::cout << "destruction of Singleton.\n";if (m_pSingleton) { delete m_pSingleton; m_pSingleton = NULL; } } void Singleton::Test() { std::cout << "Call Singleton::Test()\n"; } Singleton* Singleton::Instance() { if (NULL == m_pSingleton) { m_pSingleton = new Singleton(); } return m_pSingleton; } int main() { Singleton::Instance()->Test(); Singleton::Instance()->Test(); Singleton::Instance()->Test(); Singleton::Instance()->Test(); }