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.

  • 相关阅读:
    C++ version the delaunay triangulation
    Jason Saragih's Homepage
    asm/aam links
    自动白平衡算法效果图
    What algorithm to use to normalize someone's face on image
    神奇的图像处理算法
    计算机视觉牛人博客和代码汇总
    雅虎开源色情图片检测神经网络
    蚁群算法
    时间序列分析
  • 原文地址:https://www.cnblogs.com/windmissing/p/2559873.html
Copyright © 2011-2022 走看看