본문 바로가기
Work/개발 노트

C++에서의 다중상속

by ★용호★ 2012. 7. 20.

2012년 7월 20일

  

 그래서 간단하게 테스트해본 결과 다중상속이 허용된다. 하지만 다중상속에는 의도치 않은 여러 문제가 발생할 수가 있는데 예를 들면

 

class A
{
 int a;

};

class B: public A
{
 int b;
};

class Test: public A, public B
{

 Test() {}

}; 

 

 이 경우에 Test클래스가 상속받는 A, B 클래스 중에 B클래스가 A클래스를 상속받고 있다. 그럼 Test클래스는 결과적으로 A클래스를 두번 상속 받게 되는 것이다. 그럼 A클래스의 멤버함수 a가 중복이 되는 문제가 발생한다. 그러므로 컴파일 에러!

 

  C#에서의 인터페이스와 같이 추상 클래스를 상속 받을 때는 문제가 없다. 현재 분석중인 소스에서도 순수가상함수들로 이루어진 추상클래스들만 다중 상속을 받고 있다.

 

 

class A
{

virtual testA() = 0;

};

class B: public A
{
virtual testB() = 0;
};

class Test: public A, public B
{

Test() {}
};

이런식의 상속은 문제 없음...

 

 

댓글