详见《C++Primer》[第五版]719页

如果继承路径上没有和虚基类成员重名的成员,则不存在二义性,因为我们仅能访问到虚基类成员。

当访问仅有一条继承路径上含有和虚基类成员重名的成员,也不存在二义性。派生类的成员的优先级比基类的成员高,所以说如果没有用名字空间强制访问虚基类的同名成员的话,访问访问的就是派生类的重名成员。

当访问含有两条及以上路径上含有和虚基类成员重名的成员时就会产生二义性。

例如:

B中含有成员x,D1,D2均 虚继承 B,D继承了D1,D2,则:

  • 如果D1,D2中均不含成员x,则不存在二义性,D.x访问的是B中的x
  • 如果D1中含有x,D2中不含有,则不存在二义性,D.x访问的是D1.x
  • 如果D1,D2中均含有x,则产生二义性。

C++虚基类成员可见性相关推荐

  1. C++关于虚基类、构造函数、析构函数、成员对象的两个程序浅析

    预备博客: C++虚继承中构造函数和析构函数顺序问题以及原理 C++派生类含有成员对象构造函数析构函数顺序 C++虚基类成员可见性 程序一如下: #include<iostream> us ...

  2. C++中的虚继承与虚基类

    1.Cpp中的虚继承与虚基类 在多继承时,很容易产生命名冲突的问题,即使我们很小心地将所有类中的成员变量和成员函数都命名为不同的名字,命名冲突依然有可能发生,比如典型的是菱形继承,如下图所示: 类A派 ...

  3. C++虚继承和虚基类详解(二)

    虚继承(Virtual Inheritance) 为了解决多继承时的命名冲突和冗余数据问题,C++ 提出了虚继承,使得在派生类中只保留一份间接基类的成员. 在继承方式前面加上 virtual 关键字就 ...

  4. c++中的虚特性(虚基类、虚函数、纯虚函数)

    1. 虚基类 1.1 虚基类作用 为了解决多继承时的命名冲突和冗余数据问题,使得派生类中只保留一份间接基类的成员. 其本质是是让某个类做出声明,承诺愿意共享它的基类.其中,这个被共享的基类就称为虚基类 ...

  5. C++虚继承和虚基类;虚函数与继承

    ref http://blog.csdn.net/owen7500/article/details/52432970?locationNum=4&fps=1 http://blog.csdn. ...

  6. C++:94---类继承(菱形继承、虚继承(virtual虚基类))

    一.菱形继承 在介绍虚继承之前介绍一下菱形继承 概念:A作为基类,B和C都继承与A.最后一个类D又继承于B和C,这样形式的继承称为菱形继承 菱形继承的缺点: 数据冗余:在D中会保存两份A的内容 访问不 ...

  7. C++虚继承和虚基类

    多继承(Multiple Inheritance)是指从多个直接基类中产生派生类的能力,多继承的派生类继承了所有父类的成员.尽管概念上非常简单,但是多个基类的相互交织可能会带来错综复杂的设计问题,命名 ...

  8. 【C++】继承和派生、虚继承和虚基类、虚基类表和虚基类指针

    继承和派生.虚继承和虚基类.虚基类表和虚基类指针 继承和派生 继承概述 继承基本概念 派生类中的成员 继承的内容 派生类定义 派生类访问控制 对象构造和析构 对象构造和析构的调用顺序 继承中的构造和析 ...

  9. 虚基类及其派生类的构造函数

    虚基类的概念及用法 如果派生类的全部或者部分基类有共同的基类,那么派生类的这些直接基类从上一级基类继承的成员都具有相同的名称,定义了派生类的对象后,同名数据成员就会在内存中有多份拷贝,同名函数也会有多 ...

最新文章

  1. lock object oracle,oracle lock 08 - 关于锁的解决方案
  2. rest post无法取到request_小白学Flask第五天 | 详解很重要的request对象
  3. idea初始化git 初始化git仓库
  4. 设计模式---3(工厂方法模式的概念,工厂方法模式的实现,工厂方法模式和简单工厂模式比较)
  5. linux的grub损坏,如何利用Grub命令启动损坏的Linux系统?
  6. python seaborn boxplot_seaborn.boxplot
  7. 标准的LSTM网络以及公式
  8. 三、函数的嵌套、作用域链、函数名的应用、闭包。
  9. Pyston v2 发布:比 Python 快 20%
  10. shell 脚本案例
  11. matlab 坐标轴根号,Matlab中根号表示怎么操作?根号表示教程分享
  12. 微信小程序中的转发功能
  13. Ubuntu硬盘分区和挂载
  14. statusbar 纯白色的解决方案 android:fitsSystemWindows
  15. java中jlaber用法_laber的for属性
  16. 测试排期估时多长合理?
  17. 小程序自定义导航栏返回主页
  18. ffmpeg将mp3转m4a文件
  19. Splatter Painting题目代码
  20. 神佑释放服务器正在维护,神佑释放进不去怎么回事 服务器进不去解决办法分享...

热门文章

  1. 总线接口与计算机通信
  2. 缓存应用--Memcached分布式缓存简介(二)
  3. 生活GOOGLE,GOOGLE生活
  4. java版本号管理_微服务项目中如何管理依赖版本号?
  5. mysql表级别的操作_MySql 库/表级操作 及 数据类型 - 纪宇
  6. python函数定义关键字_Python(2)深入Python函数定义
  7. mysql 的数据库实例理解_理解数据库和实例
  8. springboot怎么替代jsp_如何在SpringBoot中使用JSP ?
  9. php实现第三方邮箱登录_PHP实现用户异地登录提醒功能的方法
  10. linux下I2C驱动发送IO时序,Linux I2C 驱动阅读的碰到的一些网上没有提到的东西