Pon*_*don 7 c++ scope static-members
标题基本上都说明了,我想知道什么时候初始化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;
Run Code Online (Sandbox Code Playgroud)
managed_pointer staticBar应该在它超出范围时立即删除它 - 但是什么时候会发生?当Foo的最后一个实例被破坏时?申请退出?
谢谢你的建议!
Luc*_*ore 13
statics和globals在程序启动之前被初始化(在main调用之前,程序实际上在此之前开始)并且在main退出之后超出范围.
异常 - 本地静态(在函数内声明的静态变量)和未使用的模板类static成员.
它与实例数无关.