C++中静态变量的初始化与销毁

 

前言

以下为规律总结,并未深入验证,暂时仅作参考。

初始化时机

静态变量的初始化通常是在使用到的时候进行的。

而这个初始化过程,有时候并不是如大家所想象的那么顺利。

假设存在类A的静态对象实例A,在其构造函数中使用类B的静态成员B进行初始化。会因为B并未先初始化而崩溃。

所以避免让静态对象的初始化依赖其他静态成员。

销毁时机

静态变量的销毁通常是随机的,可能会导致一些随机出现的错误。

假设存在类A的静态对象实例A,在其析构函数中调用了类B的静态成员B的接口,那么有可能会出现B已经被析构了,进而导致A的函数调用无效。

所以应避免在静态对象的析构函数中,调用其他静态对象的接口。