다중상속
- 다중상속이란?
하나의 파생 클래스가 여러 베이스 클래스로부터 상속을 받는 것입니다.
- 왜 씁니까?
기능을 클래스로 모듈화하여, 필요한 여러 기능을 상속 받는 형태로 편리하게 사용 가능하기 때문입니다.
- 어떻게 쓰면 좋을까요?
다중 상속과 추상 클래스를 활용하여, 객체 지향 언어의 인터페이스 문법을 구현할 수 있습니다.
- 사용 시 주의사항
Diamond Problem이란 다이아몬드 형태로 상속을 받을 때 일어나는 문제입니다. 상속받는 Base클래스에 대한 모호성이 생깁니다
#include <iostream>
class Base
{
public:
virtual void Function()
{
std::cout << "Base Func" << std::endl;
}
};
class DerivedLeft : public Base
{
public:
void Function() override
{
std::cout << "DerivedLeft Func" << std::endl;
}
};
class DerivedRight : public Base
{
public:
void Function() override
{
std::cout << "DerivedRight Func" << std::endl;
}
};
class MultipleDerived : public DerivedLeft, public DerivedRight
{
public:
void Function() override
{
std::cout << "MultipleDerived Func" << std::endl;
}
};
int main()
{
MultipleDerived* MultipleDerivedPtr = new MultipleDerived;
MultipleDerivedPtr->DerivedLeft::Function();
MultipleDerivedPtr->DerivedRight::Function();
DerivedLeft* LeftPtr = MultipleDerivedPtr;
DerivedRight* RightPtr = MultipleDerivedPtr;
return 0;
}