全局对象构造在main函数执行之前,局部静态对象构造在执行函数体之前;局部静态对象析构早于全局对象,都在main函数之后。
#include<stdio.h>
class A {
int a;
public:
A(int i) {a = i; printf("A() %d\n", a);}
~A() {printf("~A() %d\n", a);}
};
void Get() {
printf("Get() enter\n");
static A obj3(3);
printf("Get() end\n");
}
A obj1(1);
A obj2(2);
int main() {
printf("main() enter\n");
Get();
printf("main() end\n");
return 0;
}
结果:
A() 1
A() 2
main() enter
Get() enter
A() 3
Get() end
main() end
~A() 3
~A() 2
~A() 1