子类需要在c ++中相互包含时继承错误

问题描述 投票:0回答:1

说我有A类。B类和C类都是A的子类。如果C类需要包含B,那将是一个有缺陷的继承设计吗?

编辑:一个例子

说,我有一个名为Trip的父类,它具有两个属性:开始和结束。我从A继承的第一个类(B)称为SimpleTrip,它具有一个称为transport的附加属性(因此,总计:start,end和transport)。我从A继承的第二个类(C)被称为CompoundTrip,它具有两个添加的属性:SimpleTrips数组和行程数(因此总计:开始,结束,SimpleTrips数组,行程数)。复合旅行是简单旅行的“一组”,但仍然是旅行。

c++ inheritance include children flawed-concept
1个回答
0
投票

[对此进行查看,并尝试在不运行程序的情况下回答“ 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

© www.soinside.com 2019 - 2024. All rights reserved.