C++ 静态析构函数
假设我有:C++ 静态析构函数,c++,static,destructor,C++,Static,Destructor,假设我有: void foo() { static Bar bar; } C++保证我在bar上调用bar::(bar),bar::(?)()从不在bar上调用?(直到主要出口之后) 谢谢 是的。第一次调用foo(),将构造Bar。然后,它将一直可用,直到main()完成,之后它将被销毁 基本上是: static Bar *bar = 0; if (!bar) { bar = new Bar; // not "real", of course void dele
void foo() {
static Bar bar;
}
<> C++保证我在bar上调用bar::(bar),bar::(?)()从不在bar上调用?(直到主要出口之后)
谢谢 是的。第一次调用
foo()
,将构造Bar
。然后,它将一直可用,直到main()
完成,之后它将被销毁
基本上是:
static Bar *bar = 0;
if (!bar)
{
bar = new Bar;
// not "real", of course
void delete_bar(void) { delete bar; }
atexit(delete_bar);
}
注:我说“基本上”;这可能不是实际发生的情况(尽管我认为这并不遥远)
3.7.1静态存储时间
1所有既不具有动态存储持续时间也不具有本地存储持续时间的对象都具有静态存储持续时间。这些对象的存储应在项目期间持续(3.6.2、3.6.3)