我最近买了设计模式,实例是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
也就是说调用了三次构造函数,按道理应该只调用了一次构造函数,是哪里出现了问题,求解答,谢谢哈
第九行:
new Singleton;
修改为:
_instance = new Singleton;
谢谢你啊,看了好久都没看出来,太粗心了,又没去好好理解