欢迎访问 生活随笔!

生活随笔

当前位置: 首页 > 编程语言 > c/c++ >内容正文

c/c++

C++虚基类成员可见性

发布时间:2023/11/30 c/c++ 56 豆豆
生活随笔 收集整理的这篇文章主要介绍了 C++虚基类成员可见性 小编觉得挺不错的,现在分享给大家,帮大家做个参考.

详见《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++虚基类成员可见性的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。