多重继承中的虚函数表

看了一个讲类在内存中实现的帖子(http://www.cnblogs.com/jerry19880126/p/3616999.html),觉得讲的不错,但是看完有个地方不太懂,希望懂得同学可以说一下:D
菱形继承:
B 虚拟继承 A,C虚拟继承A,D虚拟继承B、C。
那么计算机在编译时构建D类,会产生三个虚函数表,一个是包含B虚函数、一个包含C虚函数的,最后一个是包含A虚函数的
问题是 那D类自身的虚函数写在哪个表里呢?
#C++工程师#
全部评论
如果D重写了A的a()、B的b()、C的c(),则D的a、b、c三个函数会覆盖ABC三个虚表上相应的函数。另,若D只重写了B的b(),剩下的虚函数都是D新定义的,则D的这些新的虚函数放在B的虚表里面,且是放在B的虚函数后面(前提是继承顺序是先B后C,否则就是放在C的虚表后面)。
点赞 回复
分享
发布于 2017-03-08 16:05
貌似是,如果D重写了父类的虚函数,就会替换掉对应父类虚函数表里的函数
点赞 回复
分享
发布于 2017-03-08 15:25
滴滴
校招火热招聘中
官网直投

相关推荐

点赞 4 评论
分享
牛客网
牛客企业服务