다중 상속이란?  
  1. #include <iostream>   
  2. using namespace std;   
  3.   
  4. class AAA{   
  5. public:   
  6.     void String1(){   
  7.         cout<<"AAA::String1"<<endl;   
  8.     }   
  9. };   
  10.   
  11. class BBB{   
  12. public:   
  13.     void String2(){   
  14.         cout<<"BBB::String2"<<endl;   
  15.     }   
  16. };   
  17.   
  18. class CCC : public AAA, public BBB{    
  19. public:   
  20.     void ShowString(){   
  21.         String1();   
  22.         String2();   
  23.     }   
  24. };   
  25.   
  26. int main(void)   
  27. {   
  28.     CCC ccc;   
  29.     ccc.ShowString();   
  30.   
  31.     return 0;   
  32. }  
 위의 소스 코드만 보면 감이 올것이다. 다중 상속이란 18번째 줄처럼 둘 이상의 클래스를 동시에 상속하는 것이다. 

 다중 상속의 모호성  
  1. #include <iostream>   
  2. using namespace std;   
  3.   
  4. class AAA{   
  5. public:   
  6.     void String(){   
  7.         cout<<"AAA::String"<<endl;   
  8.     }   
  9. };   
  10.   
  11. class BBB{   
  12. public:   
  13.     void String(){   
  14.         cout<<"BBB::String"<<endl;   
  15.     }   
  16. };   
  17.   
  18. class CCC : public AAA, public BBB{   
  19. public:   
  20.     void ShowString(){   
  21.         String();  // AAA::String();   
  22.         String();  // BBB::String();   
  23.     }   
  24. };   
  25.   
  26. int main(void)   
  27. {   
  28.     CCC ccc;   
  29.     ccc.ShowString();   
  30.   
  31.     return 0;   
  32. }  
 위의 소스 코드와 같이 다중 상속의 관계에서 AAA,BBB 클래스에 같은 이름을 가진 멤버 함수가 있다고 하면, 이때 모호성이 발생한다. 과연 이 String 함수는 어느 객체의 함수를 호출해 주는 것이냐 알수 없기 때문이다. 주석친 부분 처럼 범위 지정 연산자를 이용한 문제 해결 방법도 있지만, 아주 코드가 복잡해 지는걸 알수 있는것이다. 
Posted by 모과이IT
,