单例模式 C++实现

#include<iostream>
#include<string>
#include<cstdlib>
using namespace std;
/*
  单例模式 
  存在的问题是: 如何销毁这个类?详情见下文参考。 
*/
class singleton
{
   private:
        singleton(){}  
       // singleton *instance = new singleton();  //这种用法不对,但下一个用法则对,why? 
          static singleton *instance ;     //类中声明的静态变量需要在类外在声明一次,见2处 
     
   public:
             
        static singleton * getinstance()  //而且static 成员函数只能访问static 变量,详情见下文参考。 
        {
           
          if(instance == NULL)
          {
              instance = new singleton();  
          }    
           return instance;    
        }
    
};

 singleton* singleton::instance ;    // 2 类中静态变量在外声明时不用再加 static, 详情参考下文。 

int main()
{
  singleton *s1 = singleton::getinstance();   //只有声明为static的成员函数才可以这样单独访问,无需创建任何实例就能访问,见参考。 
  singleton *s2 = singleton::getinstance(); 
  
  if(s1 == s2)
    cout <<"is the same object!"<< endl;
  system("pause");  
  return 0;    
}


 

 

单例模式的另一种版本 参考:点击打开链接

static 变量 详细参考: 点击打开链接

特殊变量(static)初始化参考:点击打开链接

论坛参考:点击打开链接

 

总结:了解了static 声明变量时需要注意的细节问题。

发布了53 篇原创文章 · 获赞 5 · 访问量 5万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章