• 多继承和虚基类


    一.多继承机制存在哪些问题,怎么解决这些问题?
    ——歧义性:相同名称的成员在内存中同时拥有多个拷贝,当通过派生类对象使用这些成员时,就会产生歧义性。作用域操作符虽然能解决歧义性问题,但并没有解决多个拷贝的问题。

     

    类D 的内存布局

    使用虚拟机制注意事项:
    1.若在虚基类中定义了带参数的构造函数,而没有定义默认构造函数,则必须在所有的直接或间接派生类中使用成员初始化列表调用虚基类的构造函数。
    注意:
    • 如果没有虚拟继承,则只需要在直接派生类中使用成员初始化列表调用虚基类的构造函数。
    • 在上例中,如果B,C,D都调用了A的构造函数,那么有效构造函数为调用该构造函数的类所定义的构造函数,每个继承的类都显示调用基类构造函数可以解决各个派生类定义的构造函数不一致的情况。
    2.如果在同一继承层次中同时包含虚基类和非虚基类,C++编译器先调用虚基类的构造函数,再调用非虚基类的构造函数。
     
    3.如果虚基类是由非虚基类派生而来,同样遵循先调用基类构造函数,再调用派生类构造函数。
     
    (实际应用中并不建议使用多重继承,一则因为编译器问题,二则多重继承会带来二义性问题。单继承对描述事物已经提供了足够强大的功能。并非要使用多继承不可)
     
    二.多继承构造函数和析构函数的执行顺序
    析构函数的调用顺序与构造函数相反
    例如:
     
    基类指针与派生类指针的指向关系
    基类指针或引用可以在不进行显示类型转换的情况下指向派生类对象,但基类指针或引用只能用于调用基类方方法。派生类指针不可以指向基类对象。
  • 相关阅读:
    强化学习的基本迭代方法
    基于文本描述的事务聚类
    学习强化学习之前需要掌握的3种技能
    其它 华硕 ASAU S4100U 系统安装 win10安装 重装系统 Invalid Partition Table 解决
    数据分析 一些基本的知识
    Python 取样式的内容 合并多个文件的样式 自定义样式
    电商 Python 生成补单公司需要的评论格式3
    SpringBlade 本地图片上传 生成缩略图
    SQL Server 字符串截取
    SpringBlade 本地图片上传
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4635958.html
Copyright © 2020-2023  润新知