假设我有一个.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/