250327 TIL - 면접 대비(Override & Overload)

2025. 3. 27. 22:43·TIL(Today I Learned)

오버라이드는 부모 클래스에 정의되어 있는 메소드를 자손 클래스에서 재정의하는 것을 말합니다.

 

주의할 점으로는 virtaul 키워드가 붙지않는 메소드의 경우에도 오버라이드가 가능한데, 이 경우에는 부모 클래스 포인터로 인스턴스를 가리켰을 때 부모 클래스에 정의되어 있는 메소드를 호출하게 됩니다.

 

다형성을 위해서 부모 클래스 포인터로 인스턴스를 가리키고 자손에서 재정의한 메소드를 호출하고자 한다면 virtual 키워드가 붙어있는 가상 메소드로 선언하고 이를 자손 클래스에서 오버라이드해야 합니다.

 

그리고 C++11부터는 override 키워드와 final 키워드가 지원됩니다.

 

override 키워드를 사용하는 경우 해당 메소드가 상속 받아서 오버라이딩이 가능한 함수인지를 컴파일러에 의해 확인하도록 명시하는 것이 됩니다.

 

그리고 final 키워드는 이 메소드가 더 이상 오버라이딩 될 수 없다는 것을 명시합니다. 단, final 키워드의 경우 클래스의 상속 시에도 가능합니다.

기반 클래스 함수가 반드시 가상 함수 이어야한다.

기반 함수와 파생 함수의 이름이 반드시 동일해야한다. 

(소멸자 예외)기반 함수와 파생함수의 매개변수 형식들이 반드시 동일해야한다.

기반함수와 파생함수의 const 성이 반드시 동일해야한다.

기반함수와 파생함수의 반환형식과 예외 명세가 호환되어야한다.

멤버 함수들의 참조 한정자(reference qualifier)가 동일해야한다. (C++11 추가)

 

오버로딩은 같은 이름을 가진 메소드에 다른 인자 혹은 다른 인자 수를 전달받도록 하는 것을 말합니다.

 

주의할 점으로는 전달받는 인자 부분은 같지만 반환형만 다른 경우는 허용되지 않습니다.

 

공통점으로는 오버라이드와 오버로딩의 경우 둘 다 다형성을 지원하는 방법에 속합니다.

 

오버라이드의 경우 동적 다형성을, 오버로딩의 경우 정적 다형성을 지원한다는 것에는 차이점이 있습니다.

 

 

동적 다형성은 런타임에 다형성이 존재하는 것을 말합니다.

 

이는 가상 함수 테이블을 통해 메소드 호출 시 자손 클래스에 재정의되어 있는 메소드부터 차례대로 찾아

 

해당 메소드를 호출해 주는 방식과 같이 런타임에 다형성이 제공되는 것을 말합니다.

 

정적 다형성이란 컴파일 타임에 다형성이 완성되는 것을 말합니다.

 

정적 다형성을 지원하는 또 다른 방법은 템플릿 메타 프로그래밍이 있습니다.

  • 동적/정적 다형성
 

3 동적 다형성과 정적 다형성 비교

두 종류의 다형성을 분류 비교해보자 ### 용어 동적 다형성과 정적 다형성은 여러가지 C++ 프로그래밍 관용구를 지원한다. * 상속에 의해 구현되는 다형성은 한정되고 동적이…

wikidocs.net

 

'TIL(Today I Learned)' 카테고리의 다른 글

250331 TIL - 새로운 팀 프로젝트 시작  (0) 2025.03.31
250328 TIL - 람다 함수  (0) 2025.03.28
250324 TIL - 모의면접  (0) 2025.03.24
250320 TIL - 면접 대비(push_back & emplace_back, TArray와 vector의 차이, CDO, PlayerState, unordered와 ordered의 차이, Endplay / Destroyed, 언리얼 객체의 생성 순서, 언리얼 GC, 액터의 생명 주기, 언리얼에서의 object 관리, GameInstance)  (0) 2025.03.20
250319 TIL - SourceInsight 사용기  (0) 2025.03.19
'TIL(Today I Learned)' 카테고리의 다른 글
  • 250331 TIL - 새로운 팀 프로젝트 시작
  • 250328 TIL - 람다 함수
  • 250324 TIL - 모의면접
  • 250320 TIL - 면접 대비(push_back & emplace_back, TArray와 vector의 차이, CDO, PlayerState, unordered와 ordered의 차이, Endplay / Destroyed, 언리얼 객체의 생성 순서, 언리얼 GC, 액터의 생명 주기, 언리얼에서의 object 관리, GameInstance)
DevJoo1120
DevJoo1120
  • DevJoo1120
    Jin's Programming
    DevJoo1120
  • 전체
    오늘
    어제
    • 분류 전체보기 (142)
      • 포트폴리오 (7)
        • Castlevania: Aria of Sorrow.. (7)
        • [UE5] KILL Everything (0)
      • C++ (0)
      • 라이브러리 (1)
      • 다이렉트X11 (0)
      • Unreal Engine (11)
        • Unreal Document (1)
        • 이것 저것 (8)
        • UI (1)
      • 자료구조 및 알고리즘 (0)
      • 책 정리 (3)
        • 코딩 테스트 합격자 되기 C++ 편 (10)
      • 코딩 테스트 (32)
        • 프로그래머스 (32)
      • 스파르타 코딩 언리얼 1기 (9)
        • 특강 (0)
        • C++와 Unreal Engine으로 3D .. (2)
      • TIL(Today I Learned) (63)
      • 영어 공부 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    과제
    이중 반복문
    Unreal Engine 5
    반복문
    코딩 테스트
    책 정리
    WINAPI
    프로그래머스
    스파르타 코딩 클럽
    팀 프로젝트
    코딩테스트
    C++
    정렬
    Study
    배열
    Til
    map
    코딩 테스트 합격자 되기 c++ 편
    문자열
    정리
  • hELLO· Designed By정상우.v4.10.5
DevJoo1120
250327 TIL - 면접 대비(Override & Overload)
상단으로

티스토리툴바