有没有一种方法可以延迟初始化类的静态子对象

Is there a way of lazy initializing a static sub-object of a class?

本文关键字:初始化 延迟 静态 对象 方法 一种 有没有      更新时间:2023-10-16

在main()启动后,是否有初始化静态类成员的方法?

一种方法是替换静态成员函数的静态成员数据。

假设你有这门课:

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();
}