class A { public: virtual void aa() { } virtual void aa2() { } //如果此时类里有一个或多个虚函数,那么需要加1个虚指针空间 private: char ch[3]; }; // 1+4 =补齐= 8 class B: virtual public A //如果还是虚继承,那么需要再加1个虚指针空间,最多就2个虚指//针空间。 { public: virtual void bb() { } virtual void bb2() { } }; // 8(副本)+4(虚继承)+4(虚指针)= 16 这个例子中,因为B类中的虚函数没有完全覆盖A中的,所以新添了一个虚表指针,但是如果完全覆盖了,变成 class B: virtual public A //如果还是虚继承,那么需要再加1个虚指针空间,最多就2个虚指//针空间。 { public: virtual void aa() { } virtual void aa2() { } }; // 8(副本)+4(虚继承)= 12 我记得应该是这样
1

相关推荐

12-13 20:26
浙江大学 Java
淬月星辉:把浙大的校名加大加粗,把校徽再贴出来,就OK了
点赞 评论 收藏
分享
牛客网
牛客网在线编程
牛客网题解
牛客企业服务