摘要:
首先需要对虚继承进行了解:(前一篇文章有讲解) 下面的图对一般继承和虚继承很好的解释。一般的继承为Bottom构造时先构造left和right,并且同时为left和right构造各自的Top,这样Bottom中有两个Top。而虚继承Bottom构造时屏蔽了left和right对Top的构造,而是使用自己对Top的构造。下面以一个事例进行分析:如图为继承关系:A中有成员a B中有成员b经过继承: A:a 和 b C中有成员c 经过继承: A:a 和 cD中有成员d 经过继承: B:A:a,C:A:a,B:b,C:c和dE中有成员e 经过继承: D:B:A:a,D:C:A:a,D:B:b,D:C. 阅读全文
摘要:
转自:http://blog.csdn.net/littlehedgehog/article/details/5442430感谢作者 这篇文章主要讲解虚继承的C++对象内存分布问题,从中也引出了dynamic_cast和static_cast本质区别、虚函数表的格式等一些大部分C++程序员都似是而非的概念。原文见这里(By Edsko de Vries, January 2006) 敬告:本文是介绍C++的技术文章,假定读者对于C++有比较深入的认识,同时也需要一些汇编知识。本文我们将阐释GCC编译器针对多重继承和虚拟继承下的对象内存布局。尽管在理想的使用环境中,一个C++程序员并不需要了解这 阅读全文