c++单例模式
c++单例模式主要依赖的是static 静态变量生成静态指针指向类
#pragma once
#include<iostream>
using namespace std;
class A
{
public:
static A* instance()
{
if (m_instance == NULL)
{
m_instance = new A();
}
return m_instance;
}
void show()
{
std::cout << m_name << std::endl;
}
private:
A() : m_name("A") {};
A(const A&) {}
~A() {}
A& operator = (const A&);
private:
static A* m_instance;
string m_name;
};
A* A::m_instance = NULL; //类的静态数据成员只能在类外进行初始化
单例模板采用类模板方法进行设计
#pragma once
namespace yazi
{
namespace utility
{
template <typename T>
class Singlenton
{
public:
static T* instance()
{
if (m_instance == NULL)
{
m_instance = new T();
}
return m_instance;
}
private:
Singlenton() {}
Singlenton(const Singlenton<T>&); // 拷贝传入class T
~Singlenton() {};
Singlenton<T>& operator = (const Singlenton<T>); // 复制class T
private:
static T* m_instance;
};
template <typename T>
T* Singlenton<T>::m_instance = NULL;
}
}