在 Bjarne Stroustrup 的《C++ 编程语言》一书中,作者说:
有时,当您设计一个库时,有必要或者只是为了方便,发明一种具有构造函数和析构函数的类型,其唯一目的是初始化和清理。这种类型只能使用一次:分配一个静态对象,以便调用构造函数和析构函数。例如:
class Zlib_init { Zlib_init() ; //get Zlib ready for use ~Zlib_init() ; //clean up after Zlib }; Class Zlib { static Zlib_init x; / /... };
不幸的是,不能保证这样的对象在它第一次使用之前被初始化并且在它最后一次在由单独编译的单元组成的程序中使用之后被销毁。
为什么作者将构造函数和析构函数保留为私有成员?如果我们在由单独编译的单元组成的程序中使用它,为什么这种方法不起作用?它不需要定义成员x
来调用构造函数Zlib_init()
和析构函数~Zlib_init()
吗?那么这个方法有什么用呢?它在本书的第 10.4.9 节中。