class A
{
public:
A() {}
};
A b; //global variable
void fun(void)
{
A a;
}
int main()
{
fun();
}
在此代码中,我有2个问题(更新)
当在main()中调用fun()时,即在运行时或在编译时调用对象的存储时,
对于全局变量b,何时为其分配存储以及何时调用其构造函数?
答案 0 :(得分:3)
a
是在fun()
正文中分配的局部变量。每次调用A
时都会实例化fun()
,然后在对象超出范围时对其进行去实例化(销毁,析构函数调用) - 在这种情况下是{{1} }返回。
fun()
在实例化对象时调用构造函数。
这些都不会在编译时发生。