C ++构造函数行为

时间:2010-04-21 16:07:09

标签: c++ constructor

我正在声明一个像这样的类的实例:

Matrix m;

这似乎隐式初始化m(即运行构造函数)。实际情况如此吗?

3 个答案:

答案 0 :(得分:8)

是的,调用默认构造函数。

如果没有默认构造函数,则此语句格式错误。如果没有用户声明的构造函数,则编译器提供默认构造函数。

答案 1 :(得分:0)

是的,它在堆栈上创建了一个类Matrix的实例。此实例使用类Matrix的默认构造函数初始化。当变量m超出范围时,将在销毁时创建此实例。当对象被销毁时,它的析构函数将被调用。

答案 2 :(得分:-2)

是的,从语法上讲,这等于写作:

Matrix m();

虽然,如果没有定义默认构造函数,编译器将给出错误。

注意:如果没有为类定义构造函数,则编译器会生成默认构造函数,但如果定义了带参数的构造函数,则默认构造函数不是由编译器生成的。