前言
以下为规律总结,并未深入验证,暂时仅作参考。
初始化时机
静态变量的初始化通常是在使用到的时候进行的。
而这个初始化过程,有时候并不是如大家所想象的那么顺利。
假设存在类A的静态对象实例A,在其构造函数中使用类B的静态成员B进行初始化。会因为B并未先初始化而崩溃。
所以避免让静态对象的初始化依赖其他静态成员。
销毁时机
静态变量的销毁通常是随机的,可能会导致一些随机出现的错误。
假设存在类A的静态对象实例A,在其析构函数中调用了类B的静态成员B的接口,那么有可能会出现B已经被析构了,进而导致A的函数调用无效。
所以应避免在静态对象的析构函数中,调用其他静态对象的接口。