当我运行以下程序时,它会打印"一个名为"的构造函数,但是我没有定义任何对象,那么什么时候静态成员被初始化和销毁?
#include <iostream>
using namespace std;
class A
{
int x;
public:
A() { cout << "A's constructor called " << endl; }
};
class B
{
static A a;
public:
B() { cout << "B's constructor called " << endl; }
static A getA() { return a; }
};
A B::a;
int main()
{
// B b;
// A a = b.getA();
return 0;
}
答案 0 :(得分:1)
这是对象定义:
A B::a;
它是在第一次调用此转换单元中的函数之前的某个时刻构造的。由于这是main()
的单位,因此构造函数在输入main()
之前的某个时刻运行。如果在同一个单元中有其他全局对象,则它们的构造函数将以定义对象的相同顺序运行。