首页 > 编程语言 > 详细

C/C++程序基础 (七)继承和多态

时间:2018-03-27 17:11:56      阅读:233      评论:0      收藏:0      [点我收藏+]
  1. 多态
    • 编译时多态:重载
    • 运行时多态:虚函数。根据运行时的类别获取正确的虚指针,从而定位正确的虚函数。
  2. 虚函数
    • 虚函数指针:指向虚函数表。多重继承则含有多个基类的虚函数指针。
    • 虚函数表:函数指针集合。普通继承,子类沿用父类的虚函数表,可以修改基类的虚函数表。
    • 注意:虚函数依赖虚指针,虚指针位于对象内存空间。因此,多态在构造函数之后。
  3. 多重继承
    • 优点:使用多个基类的接口。基类构造顺序与继承列表一致,与初始化列表无关。
    • 问题:冗余基类导致的二义性。 
    • 解决方案:虚继承
  4. 虚继承
    • vitual class ××
    • 虚基类指针,每个类有且仅有一个虚基类指针。
    • 注意:虚继承的虚函数表不可以增加,所以子类维护自己的虚函数指针。
  5. 纯虚函数
    • 抽象基类:包含纯虚函数的类,这种类不可以实例化对象(存在未定义的函数)。
    • 纯虚函数和虚函数:1)虚函数不强制子类重写,仅仅为了支持多态。2)纯虚函数主要在于设置接口形式,必须为子类实现。另外,会导致对象不可以实例化。
  6. 总结虚函数指针的问题:
    • 单继承:一个虚函数指针
    • 多重继承:多个虚函数指针,若增加新的虚函数,则修改第一基类的虚函数表
    • 单虚继承:一个虚函数指针,若增加新的虚函数,则为子类增加一个虚函数指针
    • 多重虚继承:多个虚函数指针,若增加新的虚函数,则为子类增加一个虚函数指针

C/C++程序基础 (七)继承和多态

原文:https://www.cnblogs.com/niuxu18/p/note_interview_7.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!