条款32:确定你的public继承塑模出is-a关系

如果你令classD("Derived")以public形式继承classB("Base"),你便是告诉c++编译器,每个类型为D的对象同时也是一个类型为B的对象,反之不成立。B比D表现出更一般化的概念,而D比B表现出更特殊化的概念。

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

class Person{...};                                        

class Student:public Person{...};                

void eat(const Person& p);                       //任何人都会吃

void study(const  Student& s);                //只有学生才到校学习

Person p;                                                   //p是人

Student s;                                                  //s是学生

eat(p);                                                        //没问题,p是人

eat(s);                                                        //没问题,s是学生,而学生也是(is-a)人

study(s);                                                    //没问题,s是个学生

study(p);                                                    //错误!p不是个学生

存在于两个class之间的关系有:1、“is-a”  2、“has-a”  3、“is-implemented-in-terms-of”

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值