#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 声明变量时需要注意的细节问题。