함수 오버로딩(Overloading)

조성재·2022년 4월 3일
0

처음부터 C++

목록 보기
6/6

함수 오버로딩

  • 함수의 이름은 같지만 함수의 parameter가 다른(parameter의 타입이 다른)함수
  • C++ 컴파일러의 함수 오버로딩 과정(규칙)
    • 1단계
      • 자신과 타입이 정확히 일치하는 함수를 찾는다.
    • 2단계
      • 정확히 일치하는 타입이 없는 경우 아래와 같은 형변환을 통해서 일치하는 함수를 찾아본다.
        • char, unsigned char, shortint
        • unsigned short -> int or unsigned int
        • floatdouble
        • enumint
    • 3단계
      • 2단계와 같이 변환해도 일치하는 것이 없다면 아래의 좀 더 포괄적인 형변환을 통해 일치하는 함수를 찾는다.
        • 임의의 숫자(numeric)타입은 다른 숫자 타입으로 변환된다. (예를 들어 floatint)
        • enum도 임의의 숫자 타입으로 변환된다. (예를 들어 enumdouble)
        • 0은 포인터 타입이나 숫자 타입으로 변환된 0은 포인터 타입이나 숫자 타입으로 변환된다.
        • 포인터는 void 포인터로 변환된다.
    • 4단계
      • 유저 정의된 타입 변환으로 일치하는 것을 찾는다.
      • 만약 컴파일러가 위 과정을 진행하고도 일치하는 함수를 찾을 수 없거나 같은 단계에서 두 개 이상이 일치하는 경우에 모호하다(ambiguous)라고 판단해서 오류를 발생시킨다.

0개의 댓글