C++

[C++] 오버로딩과 오버라이딩

programmer-faust 2025. 9. 3. 10:30
  • 순서
    1. 오버로딩이란?
    2. 오버라이딩이란?
  • 오버로딩이란?
    1. 같은 이름의 함수를 매개변수 시그니처만 다르게 여러개 정의하는 것.
    2. 정적 바인딩을 통해서 바인딩 됨.
  • 오버로딩
    1. 목적: 다양한 입력 값에 따라 같은 이름의 함수가 다른 동작을 하도록 하여 코드의 가독성과 재사용성을 높임
    2. 오버로딩의 조건
      • 함수 이름은 동일해야함
      • 매개변수의 타입이나 개수가 달라야함
      • 반환 타입만 다른 것으로는 오버로딩이 허용되지 않음.
      • 같은 클래스 내에서 발생함
  • 오버라이딩이란?
    1. 상속 관계에서 부모 클래스의 가상 함수를 자식 클래스가 완전히 동일한 원형으로 재정의하여 부모의 기능을 변경하는 것.
    2. 동적 바인딩을 통해서 바인딩 됨.
    3. 오버라이딩의 조건
      • 함수 이름, 매개변수의 타입 및 개수가 부모 클래스의 함수와 완벽히 동일해야 함.
      • 주로 상속 관계에서 발생함
      • 부모 클래스에서 가상 함수로 선언된 경우에 주로 사용되며, 자식 클래스에서 일를 재정의하여 다형성을 실현함.
  • 추가 정보
    1. virtual 함수가 선언된 Base클래스를 상속받아 만들어진 파생 클래스에서 virtual 함수와 이름은 같지만 매개변수 시그니처가 다른 함수를 선언하면 이것은 오버로딩으로 볼 수 있을것인가?(단, virtual로 선언된 함수는 파생 클래스에서 오버라이딩 하지 않은 상황이라고 가정할 때)
      • 해당 함수는 오버로딩처럼 보일 수 있지만, C++에서 상속받은 다른 시그니처 함수는 파생 클래스의 새로운 정의에 의해 숨겨지므로 오버로드 집합에 포함되지 않음. => 오버로드를 살리고 싶으면 using을 통하여 오버로딩처럼 동작함.

'C++' 카테고리의 다른 글

[C++] 매크로 함수와 inline키워드  (0) 2025.09.03
[C++] 바인딩  (0) 2025.09.03
[C++] 가상 함수  (0) 2025.09.03
[C++]const 키워드  (0) 2025.09.03
[C++]static 키워드  (0) 2025.09.03