LiSarah level
获赞
38
粉丝
0
关注
0
看过 TA
4
浙江大学
2017
C++
IP属地:未知
暂未填写个人简介
私信
关注
2017-03-09 10:39
已编辑
浙江大学 C++
0 点赞 评论 收藏
分享
2017-03-08 15:16
浙江大学 C++
看了一个讲类在内存中实现的帖子(http://www.cnblogs.com/jerry19880126/p/3616999.html),觉得讲的不错,但是看完有个地方不太懂,希望懂得同学可以说一下:D 菱形继承: B 虚拟继承 A,C虚拟继承A,D虚拟继承B、C。 那么计算机在编译时构建D类,会产生三个虚函数表,一个是包含B虚函数、一个包含C虚函数的,最后一个是包含A虚函数的 问题是 那D类自身的虚函数写在哪个表里呢?
对象:如果D重写了A的a()、B的b()、C的c(),则D的a、b、c三个函数会覆盖ABC三个虚表上相应的函数。另,若D只重写了B的b(),剩下的虚函数都是D新定义的,则D的这些新的虚函数放在B的虚表里面,且是放在B的虚函数后面(前提是继承顺序是先B后C,否则就是放在C的虚表后面)。
0 点赞 评论 收藏
分享
关注他的用户也关注了:
牛客网
牛客企业服务