0
class A
{
public:
A() {}
};

A b;     //global variable

void fun(void)
{
A a;
}

int main()
{
fun();
}

在这段代码中,我有 2 个问题(已更新)

  1. 何时分配对象的存储,何时在 main() 中调用 fun(),即在运行时或编译时?

  2. 对于全局变量 b,何时为其分配存储空间以及何时调用其构造函数?

4

1 回答 1

3

a是在 的主体中分配的局部变量fun()。AnA每次调用时都会被实例化fun(),然后当对象超出范围时(在这种情况下是fun()返回时),它会被取消实例化(销毁,调用析构函数)。

A的构造函数在对象被实例化时被调用。

这些都不会在编译时发生。

于 2012-05-24T19:32:33.997 回答