老的框架或库中经常可以见到这种继承关系
struct B0 {
virtual void walk() const = 0;
virtual ~B0() = default;
};
struct B1 : B0 {
virtual void fly() const = 0;
};
struct D0 : B1 {
void fly() const override {
fmt::print("D0::fly\n"); };
void walk() const override {
fmt::print("D0::walk\n"); }
}
B1
比父类B0
的接口丰富,这种情况下算不算继承,几十年来是有争