我读我的书,它说:“对于所有的参数提供默认参数的构造函数也定义了默认构造函数”那么一个类可以有两个默认的构造函数吗?
所以在下面的代码:一个使用
class Book {
public:
int pages = 25;
double price = 10.0;
std::string font = "Times New Roman";
Book() {}
Book(int n, double p, std::string f): pages(n), price(p), font(f) { }
};
两个构造没有参数和为其参数提供默认参数的构造函数是默认构造函数?或默认参数是否意味着第二个构造将需要看起来像:图书():页(5),价格(46),字体(“宋体”){}
默认参数表示类似于“Book(int n = 0,double p = 0.0 ... etc.”),所以你的第二个构造函数不会是默认的ctor。“ –
”也定义了默认构造函数“应该表示”也可以用来定义默认构造函数“。它并不打算暗示你可以有意义地拥有两个默认的构造函数。 –
@PeteBecker我不知道标准中的措辞是否真的是错误的。它说“默认构造函数”,而不是“默认构造函数(候选)”。这是否意味着我给出的答案应该被标准的符合编译器拒绝?还是应该澄清措辞,因为没有“默认构造函数”这样的东西? –