1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #include <iostream>
- /**
- * c->A->D
- * ->B->
- */
- using namespace std;
- //基类
- class D
- {
- public:
- D(){cout<<"D()"<<endl;}
- ~D(){cout<<"~D()"<<endl;}
- void print(){cout<<"print d"<<endl;}
- virtual void print_virtual() = 0;//{cout<<"print virtual d"<<endl;}
- protected:
- int d;
- };
- class B:public D
- {
- public:
- B(){cout<<"B()"<<endl;}
- ~B(){cout<<"~B()"<<endl;}
- void print(){cout<<"print b"<<endl;}
- virtual void print_virtual(){cout<<"print virtual b"<<endl;}
- protected:
- int b;
- };
- class A:public D
- {
- public:
- A(){cout<<"A()"<<endl;}
- ~A(){cout<<"~A()"<<endl;}
- void print(){cout<<"print a"<<endl;}
- virtual void print_virtual(){cout<<"print virtual a"<<endl;}
- protected:
- int a;
- };
- class C:public B, public A
- {
- public:
- C(){cout<<"C()"<<endl;}
- ~C(){cout<<"~C()"<<endl;}
- void print(){cout<<"print c"<<endl;}
- virtual void print_virtual(){cout<<"print virtual c"<<endl;}
- protected:
- int c;
- };
- void global_print(D& s){
- s.print();
- s.print_virtual();
- }
- int main()
- {
- cout << "Hello World!" << endl;
- //D d; //抽象类,含纯虚函数
- B b;
- A a;
- C c; //D, B, A ,C
- //cout<<sizeof(d)<<endl;
- cout<<sizeof(b)<<endl;
- cout<<sizeof(a)<<endl;
- cout<<sizeof(c)<<endl;
- //global_print(d);
- global_print(b);
- global_print(a);
- // global_print(c); // 多继承,重构二义性
- return 0;
- }
|