#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