std::mutex resource_mutex;
class MyCAS // 这是一个单例类
{
private:
MyCAS() {}//私有化构造函数
private:
static MyCAS* m_instance;//静态成员变量
public:
static MyCAS* getInstance()
{
if (m_instance == nullptr)
{
std::unique_lock<std::mutex> myMutex(resource_mutex);//自动加锁
if (m_instance == nullptr)
{
m_instance = new MyCAS();
static CgarRes cl; // 当程序退出时候, cl必然会调用自己类的析构, 所以会析构 MyCAS::m_instance
}
}
return m_instance;
}
class CgarRes //类中嵌套,用来释放对象
{
public:
~CgarRes()
{
if (MyCAS::m_instance)
{
delete MyCAS::m_instance;
MyCAS::m_instance = nullptr;
}
}
};
void func()
{
cout << "test" << endl;
}
};
//类静态变量初始化
MyCAS* MyCAS::m_instance = nullptr;
int main()
{
MyCAS* p_a = MyCAS::getInstance();
return 0;
}
1、单例模式中构造函数为私有->不能在类外通过new方式创建类对象;
2、只能在类内创建一个静态方法:在静态方法中创建类对象给类外使用。
3、单例对象的销毁,一般是程序结束后,系统自动回收;也可以在类内部创建一个类,用于销毁单例对象。