我正在声明一个像这样的类的实例:
Matrix m;
这似乎隐式初始化m(即运行构造函数)。实际情况如此吗?
答案 0 :(得分:8)
是的,调用默认构造函数。
如果没有默认构造函数,则此语句格式错误。如果没有用户声明的构造函数,则编译器提供默认构造函数。
答案 1 :(得分:0)
是的,它在堆栈上创建了一个类Matrix
的实例。此实例使用类Matrix
的默认构造函数初始化。当变量m
超出范围时,将在销毁时创建此实例。当对象被销毁时,它的析构函数将被调用。
答案 2 :(得分:-2)
是的,从语法上讲,这等于写作:
Matrix m();
虽然,如果没有定义默认构造函数,编译器将给出错误。
注意:如果没有为类定义构造函数,则编译器会生成默认构造函数,但如果定义了带参数的构造函数,则默认构造函数不是由编译器生成的。