zoukankan      html  css  js  c++  java
  • 多重继续的二义性总结

    1.多重继续的二义性,根本原因是

    假如A有Test(),则B和C都有Test(),于是D产生了二义性

    2.例1:


    3.对例1稍作改变,结果又会不同

    解释:

    编译器通常都是从离自己最近的目录树向上搜索的

    子类的Test()覆盖了基类的Test(),并不代表基类的Test()消失,只是不能直接访问

    3.令B公有继承于A,以下函数都是公有

    1)A有几个Test()的重载,B没有Test()

    则:b.Test()调用A相应的重载

    2)A有几个Test()的重载,B有Test()的重载1,没有Test()的重载2

    则:b.hello()重载1,则调用B的相应重载

            b.hello()重载2,则出错

            b.A::hello(),则调用A的相应重载

    4.对于单一继承,子类能否访问父类的父类,只与继承的方式有关

    对于多重继承,子类不能直接访问父类的父类。
     

    5.用virtual来避免二义性。

    class B : virtual public A.

  • 相关阅读:
    js_类数组转化为数组
    js_立即执行函数
    react-router详解
    闭包_详解
    react_生命周期执行顺序
    Git-Gitlab-Genkins持续集成
    java 通用查询
    java-JDBC事务
    java中的session和cookie实现购物车的结算和清空
    servlet服务器
  • 原文地址:https://www.cnblogs.com/windmissing/p/2559873.html
Copyright © 2011-2022 走看看