静态成员变量可以为私有的吗?声明一个私有的静态整型成员变量。
#include <iostream> #include <vector> #include <memory> using namespace std; template <class T> //如果不使用模板设计,根本就是错误的 class Singleton { private: class object_creator{ public: object_creator() { Singleton::getInstance();// } }; static object_creator create_object; public: static T* getInstance() { static T object;//局部静态函数,只初始化一次,在main函数之前初始化,不需要考虑析构问题,如果是指针的话需要考虑。 return &object; } }; // template <class T> typename Singleton<T>::object_creator Singleton<T>::create_object; //我们不能把静态成员的初始化放置在类的定义中,但是可以在类的外部通过使用范围解析运算符 :: 来重新声明静态变量从而对它进行初始化 class CUser:public Singleton<CUser> { public: CUser() { cout<< " CUser()" <<endl; } ~CUser() { cout<< "~CUser()" <<endl; } private: vector<string> m_name; }; int main() { cout<<CUser::getInstance()<<endl; return 0; }
解:
可以,例如:
private:
static int a;