类默认构造函数

Class default constructor

本文关键字:构造函数 默认      更新时间:2023-10-16

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

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

这两个可以被认为是默认构造函数吗?如果可以,那么像第二行那样使用默认构造函数是否合乎道德?

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

可以用作默认构造函数。当两者都有时,就会出现问题,因为当编译器需要使用默认构造函数时,它无法区分这两者。例如

TestClass anObject;
TestClass objectArray[5];

与你的问题无关

出于文体上的原因,你应该使用:

TestClass();
不是

TestClass(void);

c++支持第二种形式,但不是必需的。参数类型void仅在用c语言声明函数时是必需的。

有一个以上的构造函数称为构造函数重载。如果有两个默认构造函数,它将生成一个错误,因为编译器在创建对象时不知道调用哪个构造函数。如果你不声明默认构造函数,编译器会自己做。