读书人

组合关系、属于继承关系吗?该如何解决

发布时间: 2012-02-17 17:50:42 作者: rapoo

组合关系、属于继承关系吗?
组合类不能使用他所包含的子类的保护数据,不能重定义被子类子类的虚函数,没有继承被包含类的接口
唯一继承的是被包含类的实现,

class cla
{
string name;
vallarray <int> score;
.....
}

cla 为组合类 string vallarray <int> 为被包含类

cla 与 string 或vallarray 之见是否是继承关系?

[解决办法]
组合不是继承 但是与私有继承的思想差不多 私有继承又叫做实现继承
通常的继承叫做接口继承
[解决办法]
cla 与 string 或vallarray 之见是否是继承关系
-----------------------------
不是。

你就把string 或vallarray 当作cla 的成员来看。
[解决办法]
公有继承描述严格的 "IS-A "的关系,即如果不满足 "IS-A "的关系,用公有继承就是不合适的。
组合描述的松散的 "HAS-A "的关系,即如果存在 "HAS-A "的关系,我们可以用组合,但是其他的关系我们也可以选择组合。
[解决办法]
继承是从一般到更具体的关系。
组合是整体和部分的关系。

所以LZ所举的是给合关系。

再举两个例子。
交通工具,汽车。两者是继承关系。
汽车是交通工具中更具体的一种。

汽车,轮胎。 两者是组合关系。
轮胎是汽车的一部分。

读书人网 >C++

热点推荐