본문 바로가기

카테고리 없음

[C++]함수 다중정의 -1 (Overloading)




ㅇㅇㅇㅇㅇ

ㅇㅇㅇ




같은이름의 함수?다중정의!

C언어에서는 같은 이름의 함수가 여러 개 존재할 수가 없습니다.

그러나 C++에서는 편의성을 위해 다중정의문법이 제공됩니다. 연산을 해주는 함수를 정의한다고 생각해봅시다.


덧셈하는 인수들의 타입은 int가 될수도 있고, double이 될수도 있고.. class 일수도 있겠죠.

C에서는 각각의 타입에 대해 다른 함수이름을 사용하여 정의해야 하기때문에 사용하기도 불편하고.. 쓸데없이 각각의 함수이름을 외워야할 상황도 생길 수 있습니다.


그렇지만 C++에선 타입은 다르게 , 이름은 같게 선언할 수 있습니다!



보시면 함수의 이름이 같죠? add 함수는 2개의 인수를 받고 합을 반환한다! 라는 사실만 외우고 사용할 수 있게됩니다.



같은 이름으로 원하는 타입에 대해 선언할수 있는점은 좋긴한데.. 다중정의를 하다보면 작성하기 귀찮다! 라고 생각할 순간이 올겁니다.

다중정의할 타입이 적으면 상관없을진 몰라도 많아지면 코드가 엄청 길어지겠죠?

그래서 탄생한 것이 템플릿을 활용한 함수 템플릿입니다! ! !




함수 템플릿

함수 템플릿이란 말그대로 템플릿으로 정의한 함수입니다.

템플릿을 이용하여 어떤 타입이 와도 사용가능한 함수를 찍어낼 수 있습니다.




정의 방법은 간단합니다. 원하는 함수 위에 Template<typename T>라고 적어주시면 됩니다.

물론 T대신 다른 단어도 사용가능하지만 보통 타입을 나타내는 T를 씁니다.

자세한 내용은 템플릿 파트에서 더 알아보세요 .


여튼 함수템플릿을 사용하게 되면 어떠한 타입이던 +연산이 가능한 타입이라면 뭐든지 연산해줍니다.

그리고 무엇보다 코드 길이가 대폭 줄어듭니다. 가독성도 올라갑니다 .  꼭사용합시다 ^^