一个关于生命周期的问题
先上原代码:
#include <iostream>
#include <string>
using namespace std;
class Singleton{
public:
Singleton();
~Singleton();
static Singleton singleton;
int num;
};
Singleton Singleton::singleton;
Singleton::Singleton(){
cout << "Singleton()" << endl;
this->num = 100;
cout << "num : " << Singleton::singleton.num << endl;
}
Singleton::~Singleton(){
cout << "~Singleton()" << endl;
}
void function1(){
cout << "function1..." << endl;
Singleton::singleton.num = 10;
cout << "num : " << Singleton::singleton.num << endl;
}
void function2(){
cout << "function2..." << endl;
cout << "num : " << Singleton::singleton.num << endl;
}
int main(){
function1();
function2();
return 0;
}
结果:
Singleton()
100
num : 100
main...
function1...
num : 10
function2...
num : 10
~Singleton()
问题是:
Singleton的实例化是靠得Singleton Singleton::singleton; 这句话么? 能解释一下这句话的意义么? 这是单例(可能不是很准确)?
[解决办法]
google "类的静态成员变量"
[解决办法]
1.你访问一个类的静态成员变量是不需要实例话这个类的
2.Singleton Singleton::singleton这句话的意思就是你访问了Singleton类里面的一个静态成员而已。
就像 Time Time::Now 一样
3.不知道你说的单例是不是指单键模式,一般单键模式不是这样写的