代码改变世界

Effective C++ 学习笔记(21)

2011-08-07 00:01  Daniel Zheng  阅读(256)  评论(0编辑  收藏  举报

使公有继承体现“是一个”的含义


  C++面向对象编程中一条重要的规则是:公有继承意味着 "是一个"。

  当写下类 D("Derived" )从类B("Base")公有继承时,你实际上是在告诉编译器(以及读这段代码的人):类型D 的每一个对象也是类型B 的一个对象,但反之不成立;你是在说:B 表示一个比D 更广泛的概念,D 表示一个比B 更特定概念;你是在声明:任何可以使用类型B 的对象的地方,类型D 的对象也可以使用,因为每个类型D 的对象是一个类型B 的对象。相反,如果需要一个类型D 的对象,类型B 的对象就不行:每个D "是一个" B, 但反之不成立。