C++中关于static的使用学习(1)
使用时机
构造函数或析构函数定义为private时,且需要在类 class T 的外部能够访问到类的成员。此时,可以在此类的public中定义一个 static T* fun(){} 的函数,此函数的返回值是 T 类型的指针或引用。
如:
class T
{
public:
static T* fun()
{
static T tem;
return &tem;
// 或可以new一个类T 类型的空间,并返回其地址
// return (new T);
}
void test()
{
cout << "this is ..." << endl;
}
private:
T()
{
cout << "这是构造函数,在private中" << endl;
}
~T()
{
cout << "这是析构函数,在private中" << endl;
}
};
int main()
{
T::fun()->test(); //即可在类外调用类中的成员函数
T* t = T::fun(); //也可定义一个指针,在用此指针调用类的成员函数
t->test();
}
构造函数私有化的设计保证了其他类不能从这个类派生或者创建类的实例。
注意:静态成员嵌套时,要保证所嵌套的成员已经初始化了。