chr*_*ise 1 c++ design-patterns
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 {}
Run Code Online (Sandbox Code Playgroud)
有没有办法覆盖派生类中基类的继承?也就是说,是否有可能在玄武岩中用DarkGrey覆盖Gray的继承?
继承描述了"是一种"的关系.
玄武岩不是一种"深灰色".可以说,将颜色描述为属性更好,因为每块岩石都有颜色,它不是一种颜色.
像这样的东西:
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();
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
66 次 |
| 最近记录: |