说我有A类。B类和C类都是A的子类。如果C类需要包含B,那将是一个有缺陷的继承设计吗?
编辑:一个例子
说,我有一个名为Trip的父类,它具有两个属性:开始和结束。我从A继承的第一个类(B)称为SimpleTrip,它具有一个称为transport的附加属性(因此,总计:start,end和transport)。我从A继承的第二个类(C)被称为CompoundTrip,它具有两个添加的属性:SimpleTrips数组和行程数(因此总计:开始,结束,SimpleTrips数组,行程数)。复合旅行是简单旅行的“一组”,但仍然是旅行。
[对此进行查看,并尝试在不运行程序的情况下回答“ c.a()打印什么”,然后尝试运行它。
#include <iostream>
struct A {
virtual void a() {
std::cout << "a" << std::endl;
}
};
struct B : A {
virtual void a() override {
std::cout << "b" << std::endl;
};
};
struct C : A, B {
};
int main() {
C c;
c.a();
}
https://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem