함수의 중복 선언 가능
C언어의 경우 동일한 이름의 함수가 존재해서는 안됩니다. 함수 이름은 각각 다 달라야합니다. 그런데 이게 생각보다 은근히 불편할때가 있습니다. 특히 동일한 일을 하는 함수인데 인수의 타입이 틀리면 두개의 함수의 이름은 달라야합니다. 예를 들어 절대값을 구하는 함수를 만들어 보겠습니다.
C언어의 경우는 일반적으로 abc_i, abc_d 이런식으로 분리해서 함수를 만듭니다.
즉 int abs(int n)함수와 double abs(double n)함수는 존재할수 없기 때문에 함수 이름을 다르게 합니다
보통은 int abs_i(int n)과 double abs_d(double n)으로 구분을 합니다.
하지만 C++에서는 함수의 중복 선언이 가능합니다. 함수의 이름이 같지만 인수의 타입이 틀린것을 기반으로 호출할 함수를 정하기때문에 프로그램이 동작하는데는 전혀 문제가 없습니다.
#include <iostream>
using namespace std;
int abs(int n);
double abs(double n);
int main()
{
cout << abs(-123) << "\n";
cout << abs(-1.23) << "\n";
return 0;
}
int abs(int n)
{
return n<0 ? -n : n ;
}
double abs(double n)
{
return n<0 ? -n : n ;
}
두 함수의 이름을 동일하게 abs로 하여도 인수의 타입이 다르기 때문에 전혀 문제 없습니다. 두 abs함수를 선언합니다
각 함수를 구현합니다.
asb(-123)은 int abs(int n)함수를 호출하고, abs(-1.23)은 double abs(double n)를 호출하게 됩니다.
컴파일도 에러가 없으면 결과도 잘 나왔습니다.
반응형
'C++' 카테고리의 다른 글
함수 선언시 인수의 디폴트 값 선언 (0) | 2021.10.14 |
---|---|
[c++]열거형, 구조체, 공용체 변수 선언시 키워드 생략 가능 (0) | 2021.09.23 |
[C++] 변수이지만 상수 값만을 갖는 키워드 const (0) | 2021.09.20 |
[C++] 형변환 (0) | 2021.09.15 |
[C++] 블록내 변수 선언 (0) | 2021.09.06 |
댓글