12.8 가상기본 클래스와 다이아몬드 상속 문제

보물창고·2021년 8월 15일
0

다이아몬드 상속문제

: 기본 클래스를 상속하고 있는 2개의 파생클래스가 있고,
별개의 하나의 클래스가 위의 2개의 파생클래스를 상속 할 경우에 다이아몬스 상속문제가 발생한다.

  • 모호성 문제가 나온다. 왜냐하면 Animal 클래스의 speak가 오버로딩된 클래스
    tiger, dog가 있는데 어떤것을 호출할지 몰라서 생기는 것이다.

모호성을 해결하자

  • kimera에 speak 함수를 추가하자.

-> 문제는 dog의 Animal과 tiger의 Animal의 주소가 다르다는 것이다.

  • 논리적으로 주소값 다르다고 생각한다.

  • 하지만 가상 기본 클래스를 이용하면 주소값을 동일하게 만들 수 있다.

-> tiger와 dog에 virtual 키워드 붙이자.

  • 결과 : 주소값이 동일하다는 것을 확인할 수 있따.
profile
🔥🔥🔥

0개의 댓글