相关疑难解决方法(0)

C++函数中静态变量的生命周期是多少?

如果变量声明为static在函数的作用域中,则仅初始化一次并在函数调用之间保留其值.它的生命到底是什么?它的构造函数和析构函数何时被调用?

void foo() 
{ 
    static string plonk = "When will I die?";
}
Run Code Online (Sandbox Code Playgroud)

c++ static lifetime

359
推荐指数
4
解决办法
17万
查看次数

在另一个静态对象的析构函数中构造的静态对象的析构函数

我在下一个代码中遇到了析构函数的一些问题:

#include <stdlib.h>
#include <cstdio>

class Foo2
{
    public:
        Foo2() { printf("foo2 const\n"); }

        ~Foo2()
        {
            printf("foo2 dest\n"); //  <--- wasn't called for bionic libc
        }
};

static Foo2& GetFoo2()
{
    static Foo2 foo2;
    printf ("return foo2\n");
    return foo2;
}

class Foo1
{
    public:
        Foo1() { printf("foo1 const\n"); }

        ~Foo1()
        {
            printf("foo1 dest\n");
            GetFoo2();
        }
};

int main( int argc, const char* argv[] )
{
        printf("main 1 \n");
        static Foo1 anotherFoo;
        printf("main 2 \n");
}
Run Code Online (Sandbox Code Playgroud)

为什么不要求foo2的析构函数bionic用于glibc? …

c++ oop static destructor g++

8
推荐指数
2
解决办法
482
查看次数

标签 统计

c++ ×2

static ×2

destructor ×1

g++ ×1

lifetime ×1

oop ×1