标题基本上说明了一切,我想知道 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 的最后一个实例被破坏时?在应用程序退出?
谢谢你的建议!