[C++][基础知识 3]虚基类
三 虚基类
如图所示,如果类B和类C均由类A派生而成,而类D又是由类B和类C共同派生而成,则在派生类D中就出现了基类A的两个拷贝,从而产生了冲突。为了解决此问题,VC++中引入了虚基类的概念,即在由类A派生类B和类C时,如果将基类A说明为虚基类,则类A在此后的派生类中只生成一个拷贝。例如:
D(int x,int y,int z,int q):B(y,z),C(z,q)
则系统编译时将报错。上面的程序运行后输出:
4 3 2 1
从程序的输出可以看出,类D中从类A继承来的成员a的初始化是由C行中的A(q)完成的。