虚拟继承如何解决 c++ 中的多重继承(钻石)?它将走哪条路
How virtual inheritance solves Multiple inheritance(Diamond) in c++?Which path will it take?
下面的代码是关于钻石问题的。 虚拟继承解决了这种歧义。
#include<iostream>
using namespace std;
class A {
public: void something(){cout<<"A"<<endl;}
};
class B: virtual public A
{
public: void something() {cout<<"B"<<endl;}
};
class C: virtual public A {
public: void something() {cout<<"C"<<endl;}
};
class D: public B, public C {
public: void something() {cout<<"D"<<endl;}
};
int main()
{
A *d = new D();
d->something();
}
- 虚拟继承如何解决这个问题?? 它会有 vtable 条目吗?
- 编译器采用哪条路径到达父类?
使用虚拟继承时,父类的成员在所有子类之间共享,而不是为每个子类重复,因此实际上没有菱形。
相关文章:
- 数到第n个楼梯的路(顺序无关紧要)
- vscode g++链路故障:体系结构x86_64的未定义符号
- 函数名是c中该函数的第一条指令的地址吗
- QScrollArea:由垂直滚动条引起的水平滚动条
- 跟踪滚动条上的鼠标事件
- 标准 N3337 5.2.10 第 7 条中的C++"类型"是什么意思?
- 我不知道这条线是做什么的
- 如何在不使用滚动条的情况下使视图更改
- 在 emscripten 网页汇编正在运行期间更新进度条?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- 通过水平滚动条更改标签
- GLFW DDS 加载函数的 OpenGL 链路错误
- 在 3ds Max 中更新进度条后,环境和效果 UI 不刷新
- 什么是钻石问题?是一系列问题还是特定问题?
- Qt:无法直接为带有子项的小部件添加滚动条
- C ++ pcl_ros:如何使用最新的 100 条消息生成点云
- OnVScroll : 从 CSpinButtonCtrl 或垂直滚动条调用?
- 如何在 Win32 中用一条线连接 2 个文本框?
- 虚拟继承如何解决 c++ 中的多重继承(钻石)?它将走哪条路
- 如果用Qt设计游戏,QML是一条路吗