728x90
1. 다중상속
C++에서는 하나이상의 클래스를 상속받을 수 있습니다. 이것을 다중상속(Multiple inheritance)라고 합니다.
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 | #include <iostream> using namespace std; class A{ public: A_F(){ cout << "AAA::sss" << endl; } }; class B{ public: B_F(){ cout << "BBB::sss" << endl; } }; class C:public A,public B{ public: C_F(){ A_F(); B_F(); } }; int main(int argc, char** argv) { C myC; myC.A_F(); myC.B_F(); myC.C_F(); return 0; } | cs |
출력화면
AAA::sss BBB::sss AAA::sss BBB::sss |
<그림으로 표현한 다중 상속>
클래스C는 A와B의 멤버함수에 모두 접근하여 사용하고 있습니다.
2.다중상속의 모호성
다중상속에서는 상속받는 클래스에서 같은 이름의 멤버함수가 있을 때에는 어느 함수를 호출해야 할지 모르기 때문에 모호성(ambigious)이 발생할 수 있습니다.
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 | #include <iostream> using namespace std; class A{ public: F(){ cout << "AAA::sss" << endl; } }; class B{ public: F(){ cout << "BBB::sss" << endl; } }; class C:public A,public B{ public: C_F(){ } }; int main(int argc, char** argv) { C myC; myC.F();//함수 F가 어떤 클래스의 F인지 알수없는 모호성이 발생한다. return 0; } | cs |
'CS > C++' 카테고리의 다른 글
[C++]템플릿(template) (0) | 2016.06.07 |
---|---|
[C++]다형성(Polymorphism) (0) | 2016.06.07 |
[C++]복사생성자(Copy Constructor) (0) | 2016.06.07 |
[C++]상속 접근 지시자 (0) | 2016.06.07 |