什么是虚拟继续

时间:2008-05-10 11:57:55   来源:论坛整理  作者:  编辑:chinaitzhe
请教什么是虚拟继续?感觉怪怪的
谢谢
网友回复:我也这么感觉。。呵呵
网友回复:这个主要是处理多继续的时候一种机制,普通继续是不用的.
在虚拟继续的时候会出现菱形结构,即基类A,派生类B、C从A继续,派生类D从B、C多继续
此时若A、B、C中都有数据成员 int i;

D d;
d.i=0;

i从哪继续来的呢?

所以我们可以在声明B、C的时候使用虚继续,那么A中i的拷贝在所有派生类中只有一个。
网友回复: 个人认为虚拟继续最大的影响就在于存储空间的布局上,虚拟继续有可变部分和不变部分之分。具体可参见《inside the c object model》
网友回复:C Primer,书后索引表里找。
网友回复:深度探索c 对象模型上面介绍的很清楚
建议楼主see see
网友回复:class SubClass : virtual public BaseClass 中以virtual声明的基类!!由于C 支持多重继续,所以对于一个派生类中有几个直接父类,而几个直接父类中有几个可能分别继续自某一个基类(就是父类的父类),这样在构造最终派生类时,会出现最终派生类中含有多个同一个基类的情况,就会产生二义性的问题(不知道该调用哪个基类的成员变量和函数),为解决此问题,需要使用虚基类,即只对此基类生成一块内存区域,这样最终派生类中就只会含有一个基类了。
虚拟继续的作用:解决由多继续中,父类中可能有相同的父类而引发的二义性问题。虚拟继续的虚拟和虚拟函数的虚拟没有任何关系。
网友回复:呵呵 好好看书 啊 。。
网友回复:虚拟继续和虚函数没多少关系.
虚拟继续主要是解决基类空间共享问题,即多重继续里,多重继续的话,能只出现一份基类空间.
而对基类空间的访问是由编译器处理,它的实现一般是通过虚表,要说和虚函数的相通上,应该就是这里了,都用到了表的方式.
关键字:虚拟,继续,

相关文章

文章评论

共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面