C++/개념정리

C++[함수 오버로딩]

jeongchanhyo 2024. 12. 31. 16:17

함수 오버로딩

C++는 C언어와 다르게 규칙만 지키면 동일한 이름의 함수를 사용할 수 있다. 이 시스템을 오버로딩이라고 한다.

하지만 동작 체계까지 완전 같으면 구분할 수 없기 때문에 필수 조건이 있다.

  • 매개 변수 타입
  • 매개 변수의 개수

이 두개중 하나는 무조건 달라야 프로그램이 구분을 해서 사용할 수 있다.

매개 변수 타입이 다른 경우

똑같은 이름인 display라는 함수를 각기 다른 타입으로 만들었고 입력 타입만 다르게 바꿨다 

실행을 하니 문제없이 잘 작동한다.

 

매개 변수의 개수가 다른 경우

세개 다  display라는 이름의 함수로 매개변수의 개수만 다르게 설정하고 실행시켜봤다.

 

전혀 문제없이 잘 돌아간다.

 

주의해야되는것!

위의 경우 매개변수의 타입이 다르기 때문에 잘 작동될것으로 생각되지만 포인터의 개념이 arr이 arr[0]와 같은 주소를 가리키기 때문에 위의 매개변수와 아래의 매개변수가 완전히 같은 값을 가리키므로 컴퓨터가 혼동을 해서 컴파일 오류가 생긴다. 주의해야된다!

함수 오버로딩의 순서

  1. 매개변수의 수:
    • 매개변수의 수가 다르면, 매개변수 수에 따라 우선적으로 선택된다.
    • 예: void ex(int x)와 void ex(int x, int y)가 있을 때, 두 번째 인자를 주지 않으면 첫 번째 함수가 호출.
  2. 매개변수의 타입:
    • 매개변수의 타입이 다르면, 타입에 따라 선택된다.
    • 예: void ex(int x)와 void ex(double x)가 있을 때, ex(5)는 첫 번째 함수를 호출하고, ex(5.0)은 두 번째 함수를 호출.
  3. 매개변수의 순서:
    • 매개변수의 타입이 동일하더라도 순서가 다르면 선택 기준이 됩니다.
    • 예: void ex(int x, double y)와 void ex(double x, int y)가 있을 때, 각각 다른 순서로 호출.

정리를 하자면 잘 맞는곳에 잘 찾아가서 적절하게 사용된다.

'C++ > 개념정리' 카테고리의 다른 글

C++[STL]  (0) 2025.01.01
C++[템플릿]  (0) 2024.12.31
C++[얕은 복사, 깊은 복사]  (0) 2024.12.30
C++[Dangling Pointer, Double Free, 스마트 포인터]  (0) 2024.12.30
C++[스택 메모리, 힙 메모리]  (0) 2024.12.30