假设我有一个.cpp文件:

static Foo aFoo;

Foo& staticFoo(){
    return aFoo;
}

Foo& singletonFoo(){ // not thread safe in c++-03
    static Foo staticFoo;
    return staticFoo;
}


一个.h文件公开这些功能(但不直接显示aFoo)。


我确定aFoo是在staticFoo之前初始化的吗?
我确定staticFoo之后会销毁aFoo吗?
我确定在任何自动存储期限后aFoo是否已销毁
我程序中的变量?

最佳答案

否。如果有人在静态初始化期间从另一个翻译单元调用singletonFoo,则未指定。
否,因为破坏是按照相反的顺序进行的,因此我们已经确定不能保证施工。
aFoo将在所有本地/自动变量之后销毁。

关于c++ - 静态变量生存期,文件作用域与功能范围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28700994/

10-10 02:29