• 多重继续的二义性总结


    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.

  • 相关阅读:
    plsql和tsql常用函数比对
    全面对比T-SQL与PL/SQL
    SQL/T-SQL/PLSQL
    Oracle数据库中的数据出错的解决办法
    2008-03-18 22:58 oracle基础知识小结
    Oracle SQL性能优化
    Oracle存储过程基本语法
    jenkins权限配置不对导致jenkins无法登陆
    jenkins关闭和重启
    Jenkins的安装(最为简单的安装方法)
  • 原文地址:https://www.cnblogs.com/windmissing/p/2559873.html
Copyright © 2020-2023  润新知