#include <iostream>
class A {
int x, y;
public:
A(int _x = 0, int _y = 0) : x(_x), y(_y) {
std::cout << "Constructeur de A \n";
std::cout << "x = " << x << ", y= " << y << std::endl;
}
};
class B : A {
int d;
public: B(int x, int y, int _d=2) : A(x,y), d(_d) {
std::cout << "Constructeur de B \n";
std::cout << "d = " << d<< std::endl;
}
};
所以我有上面的代碼不能編譯。我的問題是爲什麼我無法初始化d
而無需初始化Base
類參數?這就像說我不能讓用戶只提供d
的值,並使用基類的默認參數(我發現它重新初始化基類參數是多餘的,如果我想將默認值更改爲其他值)。錯誤信息不會告訴我太多'B': no appropriate default constructor available
。在C++中初始化派生類參數
將您的成員變量與構造函數參數的名稱相同稱爲非常令人困惑。 – mathematician1975
似乎編譯 - https://ideone.com/NDeV0o –
@ mathematician1975我不同意。我沒有看到問題。 – juanchopanza