如果我有如下课程。
class A {
int data;
};
A a; // Case1: calling explicit Default constructor
A b(); // Case2: Calling implicit default constructor
Case1和Case2有什么区别?
答案 0 :(得分:9)
A b();
它没有定义一个对象,它声明了一个返回类型A
的函数,它也被称为most vexing parse。
答案 1 :(得分:2)
A b(); // Case2: Calling implicit default constructor
评论不正确。 A b();
是一个函数声明(该函数被称为b
并返回类型为A
的对象,您打算稍后定义该函数) not 对象定义。
答案 2 :(得分:0)
案例1:
A a; // Case1: calling explicit Default constructor
调用隐式默认构造函数,因为您没有在类中提供过。
案例2:
A b(); // Case2: Calling implicit default constructor
函数decleration说“b”是函数名,它不带参数并返回A对象。
希望它有所帮助。