饿汉模式:
class singleton
{
public :
static singleton* getinstance()
{
return &m_instance;
}
private:
singleton() {};
singleton(singleton&) = delete;
singleton&operator=(singleton&) = delete;
static singleton m_instance;
};
singleton singleton::m_instance;
懒汉模式:
class singleton2
{ public:
static singleton2* getN()
{
if (singptr == nullptr)
{
m_mtx.lock();
if (singptr == nullptr)
singptr = new singleton2;
m_mtx.unlock();
}
return singptr;
}
private:
singleton2() { };
singleton2(singleton2&) = delete;
singleton2& operator=(singleton2&) = delete;
static singleton2* singptr;
static mutex m_mtx;
};
singleton2* singleton2::singptr = nullptr;
mutex singleton2::m_mtx;