1.何为菱形继承?
两个子类继承同一个父类,而又有子类又分别继承这两个子类,就如上图说示。
#include<stdio.h> #include<iostream> #include<queue> using namespace std; class A { public: A(){printf("A create.\n");} int a; virtual void fun(){} }; class B: public A{ public: B(){printf("B create.\n");} int b; virtual void fun1(){} }; class C: public A { public : int c; C(){printf("C create.\n");} virtual void fun3(){printf("fun3 .\n");} }; class D:public C,public B{ public: int d; D(){printf("D create.\n");} virtual void fun3(){printf("fun4 .\n");} }; //二义性问题的开销 int main() { D *pd=new D; printf("%d\n",sizeof(D)); getchar(); }