6.继承与面向对象设计

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

  • public inheritance 意味“is-a的关系”
  • 如果令class A以public形式继承class B,则意味着每一个类型为A的对象同时也是一个类型为B的对象,反之则不成立。也意味着适用于class B身上的每一件事情一定也适应于class A上

条款33:避免遮掩继承而来的名称

  • 适应情况:在base classes中的某个函数有几种overload类型,在derived classes中要对base classes中某一个重载函数进行override,此时会覆盖base classes中所有该重载函数
        class CBase
        {
                  void   f1();
                  void   f1(int);
          }
         class CDerived : public CBase
         {
                 void   f1(int);
         }

         CDerived d;
         d.f1(3);  //ok, 调用CDerived:void f1(int)
         d.f1();    //错误!因为CDerived:f1()遮掩了CBase:f1()
  • derived classes内的名称会遮掩base classes内的名称
  • 为了让遮掩的名称再见天日,可使用using 声明式或转交函数
         
         class CDerived : public CBase
         {
                 using CBase:f1;
                 void   f1(int);
         }

         
          CDerived d;
         d.f1(3);  //ok, 调用CDerived:void f1(int)
         d.f1();    //ok, 调用CBase:void f1()


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值