포스트

가상 메서드 (Virtual Method)

가상 메서드 (Virtual Method)

말머리


가상 메서드 (Virtual Method)

  • virtual로 선언된 메서드
    • 자식 클래스에서 override로 재정의 가능
    • 자식 클래스에서 sealed로 이제 다시 재정의하지 못하도록 막을 수 있음
    • 동적 디스패치 (Dynamic Dispatch):
      • 컴파일 시간에 호출될 함수가 결정되지 않고,
      • 런타임에 가상 함수 테이블(vtable)을 통해 실제 객체 타입에 맞는 함수 호출.
      • –> 부모 클래스 포인터(변수)로 자식 객체를 다룰 수 있음.

디스패치 (Dispatch)


어떤 메서드(함수)를 호출할지 결정하고, 실제로 그 코드를 실행하도록 연결해주는 과정

정적 디스패치 (Static Dispatch)

  • 컴파일 타임에 호출할 함수가 결정됨.
  • 변수의 선언된 타입을 기준으로 결정되며, 실행 속도가 상대적으로 빠름.
  • 대상: 일반 함수들

동적 디스패치 (Dynamic Dispatch)

  • 런타임에 호출할 함수가 결정됨.
  • 포인터가 실제로 가리키는 객체의 타입을 기준으로 결정됨.
  • 대상: virtual 함수
    • 가상 함수 테이블(vtable)을 통해 실제 호출될 함수를 찾음
  • 다형성을 가능하게 하는 핵심 원리

메모


이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.