열혈 c++ 프로그래밍을 보고 요약정리합니다.
9-1 멤버함수와 가상함수의 동작원리
- 가상함수의 동작원리와 가상함수 테이블
- 한 개 이상의 가상함수를 포함하는 클래스에 대해서 컴파일러는 실제 호출되어야 할 함수의 위치정보를 담고 있는 테이블(가상함수 테이블)을 만든다.
- 가상함수 테이블에는 오버라이딩 된 가상함수의 주소 정보가 포함되지 않는다
- 그렇기 때문에 오버라이딩을 한 클래스의 멤버 함수가 호출되는것
- 가상함수를 하나이상 멤버로 지니는 클래스의 객체에는 가상함수 테이블의 주소 값이 저장된다. → 직접 참조할 수 있는 값은 아니지만 내부적으로 필요에 의해서 참조되는 주소 값
9-2 다중상속에 대한 이해
- 다중상속의 모호성
- Base ←MiddleDerivedOne
- Base ← MiddleDerivedTwo
- MiddleDerivedOne ← LastDervied
- MiddleDerivedTwo ← LastDervied