[열혈 c++ 프로그래밍] ch9

hyng·2023년 3월 21일
0

열혈 c++ 프로그래밍

목록 보기
10/12

열혈 c++ 프로그래밍을 보고 요약정리합니다.

9-1 멤버함수와 가상함수의 동작원리

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

9-2 다중상속에 대한 이해

  • 다중상속의 모호성
    • Base ←MiddleDerivedOne
    • Base ← MiddleDerivedTwo
    • MiddleDerivedOne ← LastDervied
    • MiddleDerivedTwo ← LastDervied
      • 이런 상황에서 LastDervied객체를 생성하면 Base가 두 번 생성됨
      • 이런 경우를 막기 위해 사용하는것이 가상상속
        class MiddleDerivedOne : virtual public Base {...};
        class MiddleDerivedTwo : virtual public Base {...};
        class LastDervied : public MiddleDerivedOne, public MiddleDerivedTwo {...};
profile
공부하고 알게 된 내용을 기록하는 블로그

0개의 댓글