<分区>
为什么 Down
不通过 Left
和 Right
两次调用 Base
构造函数?
class Base {
public:
Base() { cout << "base-ctor" << endl; }
Base(string a) { cout << a << endl; }
};
class Left : virtual public Base {
public:
Left(string a) : Base(a) {}
};
class Right : virtual public Base {
public:
Right(string a) : Base(a) {}
};
class Down : public Left, public Right {
public:
Down(string a) : Left(a), Right(a) {}
};
int main() {
Down x("down");
// -> base-ctor
}