gpt4 book ai didi

c++是否有可能覆盖继承?

转载 作者:太空宇宙 更新时间:2023-11-03 10:40:14 26 4
gpt4 key购买 nike

C++ 中的以下结构是否可行并值得推荐?

class IColour{}

class Grey: public IColour {}

class DarkGrey: public IColour {}

class IMaterial {}

class Rock: public Material, public Grey {}

class Basalt : public Rock, public DarkGrey {}

有没有办法在派生类中覆盖基类的继承?即是否可以在Basalt中用DarkGrey覆盖Gray的继承?

最佳答案

继承描述了一种“是一种”的关系。

玄武岩不是“某种”深灰色。可以说,最好将颜色描述为一种属性,因为每 block 岩石都有一种颜色,而不是一种颜色。

像这样:

class IColour{};

class Grey: public IColour {};

class DarkGrey: public IColour {};

const IColour& dark_grey()
{
static DarkGrey _ {};
return _;
}

const IColour& grey()
{
static Grey _ {};
return _;
}

class IMaterial {
virtual const IColour& get_colour() const = 0;
};

class Rock: public IMaterial
{
const IColour& get_colour() const override {
return grey();
}
};

class Basalt : public Rock
{
const IColour& get_colour() const override {
return dark_grey();
}
};

关于c++是否有可能覆盖继承?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41119851/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com