在“C语言”一书中,作者声称
Sometimes, when you design a library, it is necessary, or simply convenient, to invent a type with a constructor and a destructor with the sole purpose of initialization and cleanup. Such a type would be used once only: to allocate a static object so that the constructor and the destructor are called.
我感兴趣的是这句话所指的是什么样的场景?或者这句话如何帮助软件设计?
这本书也举了一个例子
class Zlib_init{
Zlib_init( );
~Zlib_init( );
};
class Zlib{
static Zlib_init x;
}
这本书说明了这一点
Unfortunately, it is not guaranteed that such an object is initialized before its first use and destroyed after its last use in a program consisting of separately compiled units.
为什么会这样?
谢谢你的澄清.
最佳答案 C标准未指定静态对象的创建顺序.因此,如果您需要静态对象中的某个层次结构,则需要它们相互依赖(例如,一个应该是另一个的成员).书中的构造保证了这种行为.
例如,一个假想的游戏引擎需要声音和图形引擎才能工作,如果你在不同的编译单元中将它们声明为静态对象,并且彼此使用它们,除非你按照你指定的方式对它们进行编码,否则不能保证它不会失败.
有关问题的第二部分,请参阅C++ faq条目.