일반 상속과 가상 상속 오브젝트의 구조 다이아몬스 상속의 해결방법인 Virtual Inheritance 가상 상속의 구조에 대해 알아보자. 이전 게시글에서 언급했던 다이아몬드 상속의 구조이다. 간단하게 이전 게시글에서 마지막에 언급했던 다이아몬드 상속의 내용을 다시 정리해 보면, 위 (그림1)과 같은 구조를 갖는 Liger 오브젝트를 생성할 때 virtual 키워드 없이 오브젝트를 생성하면 Animal Constructor가 2번 중복되어 호출된다는 것이다. virtual 키워드를 사용해서 Liger 오브젝트를 호출하면 Animal Contructor가 1번만 호출된다. 그렇다면 virtual 키워드를 붙여서 inheritance를 만들 때 일반적인 상속과 어떤 차이점이 있을까? 앞서 virtual fu..
다이아몬드 상속
다중 상속 Multiple Inheritance란? 지금까지는 Base Class가 1개인, Linear 상속 함수만을 다뤘다. Base Class를 사자와 호랑이 두 개를 만들고 두 클래스를 모두 상속 받게 되면 사자와 호랑이의 혼종인 라이거 클래스를 만들 수 있는 것이 바로 다중 상속이다. Lion, Tiger base class 를 만들고 두 개를 동시에 상속받아서 Liger derived class를 만들어 보자. 1) 컨스트럭터와 디스트럭터의 실행 순서는? 만약 다중상속 받을 때 상속의 순서에서 Tiger를 만저 써주게 되면 컨스트럭터의 순서도 바뀌게 된다. 2) 다중 상속시 오브젝트의 사이즈 각각 speak() 함수를 만들고 실행해보면 각각에 맞는 컨스트럭터가 불려진 후에 Liger! 외치게 ..