是否有一种懒惰初始化类的静态子对象?
答
的一种方式做到这一点是取代静态成员数据,静态成员函数。
说你这个类:
class A
{
static B static_b; //static member data
};
//.cpp
B A::static_b; //definition (required)
所以不是可以定义你的类为:
class A
{
static B static_b() //static member function!
{
static B b;
return b;
}
};
注意,它不是线程安全的,但你可以把它也是线程安全的。
答
您可以使用指针此对象:
class SomeClass{
public:
static SomeOtherClass* p;
};
SomeOtherClass* SomeClass::p;
void main(){
SomeClass::p = new SomeOtherClass();
}
+0
但是这个分配必须手动销毁。我想避免这一点。 – Belloc 2012-02-19 12:25:16
你是什么意思*静态子对象*?你的意思是*静态成员*? – Nawaz 2012-02-19 12:18:51
是一个静态成员,它是嵌入类的对象 – Belloc 2012-02-19 12:20:54