【发布时间】:2012-07-04 13:25:02
【问题描述】:
标题基本上说明了一切,我想知道 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 的最后一个实例何时被破坏?在应用程序退出?
感谢您的建议!
【问题讨论】:
-
哎呀,感谢您纠正错字。
-
当您简单地删除最后一个实例或当您的程序存在时,Foo 的最后一个实例被破坏。无论类的实例有多少,类的静态成员都会存在。
标签: c++ scope static-members