在这本书中“C++语言”,作者声称对象初始化
有时候,当你设计一个图书馆,这是必要的,或者干脆方便,去创造一种有一个构造函数和析构函数只有初始化和清理的目的。这种类型只能使用一次:分配一个静态对象,以便调用构造函数和析构函数。
我很感兴趣这种说法是指哪种场景?或者这个声明如何帮助软件设计?
书中还举了一个例子
class Zlib_init{
Zlib_init();
~Zlib_init();
};
class Zlib{
static Zlib_init x;
}
和书指出
不幸的是,它不能保证,这样的对象是其第一次使用前初始化,并在最后一次使用后销毁在由单独编译的单元组成的程序中。
为什么会发生这种情况?
感谢您的澄清。
你有保证这样的一个对象将被创建之前main被调用并在主返回后被销毁。因此,你可能会试图说:“但是......一切都很好”。不幸的是,你可能在你的程序的某个地方有一个不同的静态对象,它也使用Zlib_init对象,并且C++语言不能保证它是否会在这个对象或其他对象之前或之后被创建或销毁,只要它们在不同的编译单元。所以,措辞可能有些迂腐,但它是100%正确的。 (好吧,无论如何它是正确的,因为它是Stroustrup)。 – Damon 2011-03-16 16:39:48