我讀我的書,它說:「對於所有的參數提供默認參數的構造函數也定義了默認構造函數」那麼一個類可以有兩個默認的構造函數嗎?
所以在下面的代碼:一個使用
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我不知道標準中的措辭是否真的是錯誤的。它說「默認構造函數」,而不是「默認構造函數(候選)」。這是否意味着我給出的答案應該被標準的符合編譯器拒絕?還是應該澄清措辭,因爲沒有「默認構造函數」這樣的東西? –