C++之继承多态初识

3、继承

  1. 代码复用的两种方式:
    1. 组合
    2. 继承
  2. 继承的权限:private、protected、public;
  3. 子类构造函数:初始化子类成员,调用父类的构造函数初始化父类的成员(对象初始化列表)
    1. 注意:若父类没有无参构造函数,则子类中所有构造函数中显示调用父类的构造函数。
  4. 构造函数的调用顺序:先构造父类(继承时的前后顺序),子对象(其他类的对象),后构造子类。
    1. 缺点:固定的调用时机,一般用自己写的init函数代替构造函数。
  5. 析构函数的调用顺序:与构造函数相反。
  6. 多继承:

此时D如果想要调用A中的成员变量的话,则会产生二义性,即D不知道A中的成员从B还是C中取出。可以显示调用: eg:D d; d.A::getNum()。//getNum为A类中的成员函数

同时可以通过虚继承来解决多继承带来的二义性。

 

虚继承------实现机制?

底层实现原理:底层实现原理与编译器相关,一般通过虚基类指针实现,即各对象中只保存一份父类的对象,多继承时通过虚基类指针引用该公共对象,从而避免菱形继承中的二义性问题。

4、多态

  1. 概念:同一个接口,传递不同的参数,执行不同的操作。
  2. 多态的条件:
    1. 继承
    2. 要有虚函数
    3. 要发生虚函数的重写(动态联编) override
  3. 发生的时机:基类指针或者是引用指向派生类
  4. 意义:可以在任意的地方,用子类替换父类
  5. 作用:
    1. 提高代码的扩展性(添加新功能时,不修改原来的代码,只添加新的代码(开闭原则))
  6. 多态实现的情况下,父类的析构函数必须是虚析构函数? 如果不是,就不能正常释放子对象的空间?

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值