<十>关于菱形继承


代码1

#include 
using namespace std;
	
class A{

public:
	
 A(int _a):ma(_a){
   cout<<"A()"<

D的内存结构

发现有重复的 数据 ma

为了解决上面的问题,引入虚继承

代码2

#include 
using namespace std;
	
class A{

public:
	
 A(int _a):ma(_a){
   cout<<"A()"<

虚继承用来解决多重继承中遇到的多份数据的问题

虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,也并不常用,而一旦离开了多重继承,虚拟继承就完全失去了存在的必要(因为这样只会降低效率和占用更多的空间,关于这一点,我自己还没有太多深刻的理解,有兴趣的可以看网络上白杨的作品《RTTI、虚函数和虚基类的开销分析及使用指导》)。