본문 바로가기
C++

[C++] 함수의 중복 선언 가능

by bglee 2021. 9. 23.

함수의 중복 선언 가능

 

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)를 호출하게 됩니다.

 

 

컴파일도 에러가 없으면 결과도 잘 나왔습니다.

반응형

댓글