Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 静态析构函数_C++_Static_Destructor - Fatal编程技术网

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)