1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | #include<iostream> #include<string> #pragma warning(disable:4996) using namespace std; class A { int a; public: A(int a) { this->a = a; } void disp() { cout <<"A::"<< a << endl; } }; class B :virtual public A { int b; public: B(int a, int b) :A(a) { this->b = b; } void disp() { cout <<"B::"<< b << endl; } }; class C: public virtual A{ int c; public: C(int a, int c) :A(a) { this->c = c; } void disp() { cout <<"C::"<< c << endl; } }; class D : public B,public C { int d; public: D(int a, int b, int c, int d):B(a,b),C(a,c),A(a){ this->d = d; } void disp() { cout <<"D::"<< d << endl; } }; void main() { D dd(1,2,3,4); dd.disp(); dd.C::disp(); dd.B::disp(); dd.A::disp();//virtual(가상 상속)을 하지 않으면 모호해서 에러가 떠야하는데 안 뜹니다. //높은 버전에서는 에러가 뜨지 않습니다. } |
'code > C++' 카테고리의 다른 글
[C++] protected 상속 (0) | 2017.04.20 |
---|---|
[C++] public 상속 (0) | 2017.04.20 |
[C++] 성적처리 동적리턴 (0) | 2017.04.20 |
[C++] 성적관리-동적할당 (0) | 2017.04.20 |
[C++] Stack&Queue (예외처리, 소멸자 포함) (0) | 2017.04.20 |