这次要实现的是单件模式,这里采用宏定义进行简单实现,直接贴代码。
1 #pragma once 2 #include "windows.h" 3 //单件的声明宏,放在头文件中 4 #define DECLARE_SINGLETON(CSingleton)\ 5 public:\ 6 static CSingleton* GetInstance();\ 7 private:\ 8 static CSingleton* m_pInstance; 9 10 //单件的实现宏,放在源文件中 11 #define IMPLEMENT_SINGLETON(CSingleton)\ 12 CSingleton* CSingleton::m_pInstance = NULL;\ 13 CSingleton* CSingleton::GetInstance()\ 14 {\ 15 if (NULL == m_pInstance)\ 16 {\ 17 m_pInstance = new CSingleton;\ 18 }\ 19 return m_pInstance;\ 20 }
实际的单例需要注意讲构造函数声明为private。
1 #pragma once 2 #include "Singleton.h" 3 class CTestSingleton 4 { 5 DECLARE_SINGLETON(CTestSingleton) 6 public: 7 ~CTestSingleton(); 8 9 private: 10 CTestSingleton(); 11 };
1 #include "pch.h" 2 #include "TestSingleton.h" 3 4 IMPLEMENT_SINGLETON(CTestSingleton) 5 6 CTestSingleton::CTestSingleton() 7 { 8 } 9 10 CTestSingleton::~CTestSingleton() 11 { 12 }