#include <iostream>
#include <List>
using namespace std;
class Singleton
{
public:
static void Register(const char* name, Singleton*);
static Singleton* getInstance();
void say();
protected:
Singleton();
static Singleton* Lookup(const char* name);
private:
int i;
static Singleton* _singleton;
//static List<NameSingletonPair>* _registry;
};
Singleton* Singleton::_singleton=NULL;
Singleton::Singleton()
{
i=0;
std::cout<<endl<<"singleton constructor"<<endl;
}
void Singleton::say()
{
cout<<"hahge-";
i++;
cout<<i;
}
Singleton* Singleton::getInstance()
{
if(NULL==_singleton) {
_singleton = new Singleton();
}
return _singleton;
}
int main()
{
Singleton* psin=Singleton::getInstance();//直接调用类的静态方法,调用该方法时static才会实例为全局数据区的一个值
psin->say();
Singleton* psin2=Singleton::getInstance();
psin2->say();
return 0;
}
本文介绍了一种使用C++实现单例模式的方法,并通过一个简单的示例展示了如何确保类只有一个实例并提供一个全局访问点。该示例还演示了单例对象的构造过程及其实例化的时机。
481

被折叠的 条评论
为什么被折叠?



