在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一 虚继承 1) 代码:
endl;}
};
2)类图:
3)VS2008的编译选项查看布局:
4)可视化表示:
5)代码验证:(此时的虚函数表不是以NULL结尾,为什么?)
;
PrintMemberAndVT(pGD); delete pGD; }
6)验证代码结果:
7)总结: 虚继承,使公共的基类在子类中只有一份,我们看到虚继承在多重继承的基础上多了vbtable来存储到公共基类的偏移。
二 虚继承运行时类型转化
1)代码验证:
endl;
}
2)验证代码结果:
3)总结: 还是从内存布局来看dynamic_cast时地址的变化,第一个基类的地址与子类相同,其他的基类和虚基类需要做偏移。 三 完! |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论