Effective C++ 第三十二条 Make sure public inheritance models “is-a”.

2023-02-03 04:01:03 来源:哔哩哔哩


【资料图】

确定你的 public 继承塑膜出 is-a 关系

先说清楚什么是 “is-a”,如下方例子

person 是一个 base,student 是 person 的一个 derived。如果现在有几个函数

eat 函数放入 person 还是 student 都可以,但是 exam 函数放入 person 就会报错,因为 student 本身也是 person,但是 person 不一定是 student。C++ 中 base 好比一种类别,derived 就是一种特例。人是一个宽泛的概念,人里面有学生、律师、工人等,而学生、律师等就是人的细化(分类)。base 不一定是 derived,但是 derived 一定是 base。凡是放入 base 作为参数的位置都可以放入 derived,反之则不行。

需要注意,本章说的 is-a 关系是 public inheritance,不包括 protected 和 private。

总结:

public “继承” 意味着 is-a,适用于 base classes 身上的每一件事情一定也适用于 derived classes 身上,因为每一个 derived classes 对象也都是一个 base classes 对象。

标签: 不一定是

相关热词搜索:不一定是

[责任编辑:]

最近更新