我知道静态变量是在编译时初始化的,但是静态对象呢?
例如,如果我有以下代码:
class A {
A();
};
A::A(){
std::cout << "Constructing A" << std::endl;
}
int main(){
std::cout << "Hello World!" << std::endl;
static A A_obj;
std::cout << "Goodbye cruel world" << std::endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我应该期望输出是:
Hello World!
Constructing A
Goodbye cruel world
Run Code Online (Sandbox Code Playgroud)
要么
Constructing A
Hello World!
Goodbye cruel world
Run Code Online (Sandbox Code Playgroud)
"我知道静态变量在编译时被初始化"
不对.static函数范围的变量在第一次遇到时严格初始化.并将在关闭支撑后被破坏main.
您将按此顺序获得输出:
Hello World!
Constructing A
Goodbye cruel world
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |