タイトルは基本的にそれをすべて言います.C++クラスの静的メンバーがいつ初期化され、いつスコープ外になるのだろうか.
次の問題でこれが必要です。クラス Foo のオブジェクトが多数あり、各オブジェクトは、別のクラス Bar によってカプセル化されたリソースにアクセスする必要があります。同期は問題ではないので、すべてのオブジェクトが同じ Bar インスタンスを共有するようにします。
参照カウントに単純なマネージ ポインターを使用しています。
次のことができますか:
class Foo {
private:
static managed_pointer<Bar> staticBar;
public:
Foo() {
if(!staticBar)
staticBar = new Bar;
}
/*
* use staticBar in various non-static member functions
*/
};
managed_pointer<Bar> Foo::staticBar = NULL;
managed_pointer staticBar は、Bar オブジェクトがスコープ外になるとすぐに削除する必要がありますが、これはいつ行われるのでしょうか? Foo の最後のインスタンスが破棄されるのはいつですか? アプリケーション終了時?
アドバイスありがとうございます!