类默认构造函数

时间:2014-06-17 15:35:43

标签: c++ class constructor default-constructor

假设我们的C ++项目中有类TestClass。默认构造函数是一个空参数列表。所以我们有:

TestClass();
TestClass(int defaultParam = 0);

这两个可以被视为默认构造函数吗?如果它们可以,那么拥有像第二行这样的默认构造函数是否合乎道德?

2 个答案:

答案 0 :(得分:2)

中的任何一个
TestClass(void);
TestClass(int defaultParam=0);

可以用作默认构造函数。当你有两者时,这是一个问题,因为当编译器需要使用默认构造函数时,编译器无法区分这两者。 E.g。

TestClass anObject;
TestClass objectArray[5];

与您的问题无关

出于文体方面的原因,您应该使用:

TestClass();

而不是

TestClass(void);

第二种形式是C ++支持的,但没有必要。只有在C语句中声明函数时才需要参数类型void

答案 1 :(得分:0)

有多个构造函数被称为构造函数重载。如果有两个默认构造函数,它将生成错误,因为编译器在创建对象时不知道要调用哪个构造函数。如果你没有声明一个默认的构造函数,那么编译器会单独完成它。