0
这种说法是否属实:声明带参数的构造函数会隐藏构造函数的默认构造函数 ,您无法调用默认构造函数。默认和参数化构造函数
这种说法是否属实:声明带参数的构造函数会隐藏构造函数的默认构造函数 ,您无法调用默认构造函数。默认和参数化构造函数
不完全。相反,它会抑制编译器提供的默认构造函数的生成。试想一下:
class Class1 {
};
Class1
将有一个编译器生成的默认构造函数,这样你就可以调用new Class1()
,而
class Class2 {
Class2(int);
}
不会有编译器生成的默认构造函数。所以,你不能叫new Class2()
,除非你明确地声明默认构造函数Class2
:
class Class2 {
public:
Class2();
Class2(int);
}
胜于指定多个构造函数,最好的办法就是用这样的默认参数: MyClass类{ INT I; public: MyClass(int i = 0){this-> i = i} }; – Ashish 2010-05-31 06:04:05
@Mac:有时你建议的更好,有时候不会 - 取决于确切的情况。 – sharptooth 2010-05-31 06:10:12