class Singleton
{
public:
// 通过类名获得类实例指针
static Singleton* instance()
{
if (!_instance)
_instance = new Singleton;
return _instance;
}
private:
// 禁止拷贝
Singleton(const Singleton& );
Singleton& operator=(const Singleton& );
// 将构造函数声明为私有的
Singleton(){}
static Singleton* _instance;
};
Singleton* Singleton::_instance = NULL;
这样只开放给外部一个接口获取类实例指针,且只在第一次执行new
的动作。
int main(int, char**)
{
Singleton* s = Singleton::instance();
Singleton* s2 = Singleton::instance();
// s、s2 指向同一个类实例
return 0;
}