【发布时间】:2015-03-17 15:42:21
【问题描述】:
在 JSF C++ Coding Standards 中,AV 规则 87 显示了抽象基类的图表和作为多重继承的实现。
此图试图显示什么?
在这个例子中,私有/保护继承的目的是什么?
如何将实现创建为基类?
来自 AV 规则 87 的图表显示 D1 继承自 impl;这是 impl 一个与接口无关的不同实现吗?
反病毒规则 87
层次结构应该基于抽象类。见 Stroustrup 2, 12.5.
理由: 基于抽象类的层次结构倾向于将设计重点放在生成干净的接口上,将实现细节排除在外 接口,并最小化编译依赖,同时允许 替代实现共存。参见附录 A 中的 AV 规则 87 例如。
...
附录 A - AV 规则 87
首选基于抽象类的层次结构。因此 图表顶部的层次结构优先于层次结构 在图表的底部。
使用形状的经典多态示例:
5。 我的实现会是以下吗?这对我来说似乎不正确。我担心,我错过了设计的目的。传统上,我希望 Right_Triangle 继承自 Triangle。
class Shape{}; // Interface
class Right_Triangle{}; // Impl
class Triangle : public Shape,
private Right_Triangle {}; // D1
【问题讨论】:
标签: c++ inheritance multiple-inheritance