读书笔记《Effective C++》条款32:确定你的public继承塑模出is-a关系

来源:互联网 发布:java程序员个人评价 编辑:程序博客网 时间:2024/05/16 14:53

以C++进行面向对象编程,最重要的一个规则是:public inheritance(公开继承)意味“is-a”(是一种)的关系。

如果你令class D(“Derived”)以public形式继承class B(“Base”),你便是告诉C++编译器,每一个类型为D的对象同时也是一个类型为B的对象,反之不成立。也就是说,B比D表现出更一般化的概念,而D比B表现出更特殊化的概念。B对象可派上用场的任何地方,D对象一样可以派上用场,因为每一个D对象都是一种(是一个)B对象。反之如果你需要一个D对象,B对象无法效劳,因为虽然每个D对象都是一个B对象,反之并不成立。

public继承主张:能够施行于base class对象身上的每件事情,也可以施行于derived class对象身上。

is-a并非是唯一存在于class之间的关系。令两个常见的关系是has-a(有一个)和is-implemented-in-terms-of(根据某物实现出)。


要点:

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

阅读全文
0 0