Bjarne Stroustrup 著 The C++ Programming Language の中で、著者は次のように述べています。
ライブラリを設計するとき、初期化とクリーンアップのみを目的として、コンストラクタとデストラクタを使用して型を作成することが必要な場合や、単純に便利な場合があります。このような型は、コンストラクタとデストラクタが呼び出されるように静的オブジェクトを割り当てるために、一度だけ使用されます。例えば:
class Zlib_init { Zlib_init() ; //get Zlib ready for use ~Zlib_init() ; //clean up after Zlib }; Class Zlib { static Zlib_init x; / /... };
残念ながら、そのようなオブジェクトが最初に使用される前に初期化され、個別にコンパイルされたユニットからなるプログラムで最後に使用された後に破棄されることは保証されていません。
なぜ作成者はコンストラクタとデストラクタをプライベート メンバーとして保持するのですか? また、個別にコンパイルされたユニットで構成されるプログラムでこの方法を使用すると、なぜこの方法が機能しないのでしょうか? コンストラクタとデストラクタx
を呼び出すためのメンバーの定義が必要ではないでしょうか? では、この方法の用途は何ですか?本のセクション 10.4.9 にあります。Zlib_init()
~Zlib_init()