读书人

请教单件模式为什么要用静态方法来实现

发布时间: 2012-02-12 17:16:33 作者: rapoo

请问单件模式为什么要用静态方法来实现?
不用不行吗?如果不用得话,用指针也可以去调用Instance()啊
迷惑中

[解决办法]
当我有一个 T 类型的指针 T* p; 要通过 p 调用成员方法 p-> Instance(),必须是在 p 已经指向一个 T 类型对象的前提下。
T t;
p = &t;
或者
p = new T();

这时,已经有(至少)一个 T 对象存在了,且这个对象由调用者手工创建,那么,如何防止调用者创建第二个 T t2; 呢?不能防止,如何保证 Singleton 的单件语意?
[解决办法]
class signel
{
public :

static signel* GetInstande()
{
static signel* obj = new signel; // 这个只会运行一次,所以无论调用多少次,都是得到同一个obj
return obj;
}

private :
signel(){};

};

int main()
{
signel* p = signel::GetInstande();

读书人网 >C++

热点推荐