首页 新闻 会员 周边

C++单例模式

0
悬赏园豆:5 [已解决问题] 解决于 2015-03-30 20:26

我最近买了设计模式,实例是C++的,当看到用C++实现的单例模式,出现了一个问题,代码如下:

 1 #include<iostream>
 2 using namespace std;
 3 class Singleton{
 4 public:
 5     static Singleton* Instance()
 6     {
 7         if( _instance ==  0 )
 8         {
 9             new Singleton;
10         }
11 
12         return _instance;
13 
14     }
15 protected:
16     Singleton()
17         {
18       cout<<"it is creating the object\n";
19     }
20 
21 private:
22     static Singleton* _instance;
23 
24 };
25 Singleton *Singleton::_instance =0;
26 
27 int main()
28 {
29     Singleton *p1 = Singleton::Instance();
30     Singleton *p2 =  Singleton::Instance();
31     Singleton *p3 =  Singleton::Instance();
32         return 0;
33 }

为什么最后的输出会有三条这样的语句: it is creating the object

也就是说调用了三次构造函数,按道理应该只调用了一次构造函数,是哪里出现了问题,求解答,谢谢哈 

盛夏落木的主页 盛夏落木 | 初学一级 | 园豆:173
提问于:2015-03-30 19:22
< >
分享
最佳答案
0

第九行:

new Singleton;

修改为:

_instance = new Singleton;

收获园豆:5
519740105 | 大侠五级 |园豆:5810 | 2015-03-30 19:42

谢谢你啊,看了好久都没看出来,太粗心了,又没去好好理解

盛夏落木 | 园豆:173 (初学一级) | 2015-03-30 20:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册