본문 바로가기
[ CODING STUDY ]/》C++ 코드실습

C++ [템플릿_01, template, typename]

by MRG 2021. 8. 19.
728x90
반응형

▣ 안녕하세요. 이번장에서 템플릿을 공부해보도록 하겠습니다. 

우선 필요성에 대해서 생각해보겠습니다. 

 

▣ 우리가 함수 오버 로딩을 공부했습니다. 

함수 이름을 동일하게 사용하는 걸 이야기하는데, 

이는 자료형이나 매개변수에 수가 다르면 사용할 수 있습니다.

sum라는 함수에 하나는 int형으로 하나는 double형으로 

반환형을 지정했습니다. 

 

▣ 그리고 main() 함수에서 sum(10, 20), sum(1.4, 4.5)를 각각 출력해보면

매개변수에 값에 자료형에 따라 함수 오버 로딩으로 값이 출력되는 걸 확인할 수 있습니다.

하지만 함수이름이 같기 때문에 반환형에 자료형과 

매개변수에 자료형이 어떻게 지정되어 있는지 우리는 알기가 어렵습니다.

직접 코드를 보는 방법도 있지만, 

그렇지 못할 경우 반환형이 정수형인데 실수형으로 매개변수 값을 주게 되면

실수 값을 잃게 되는 상황이 나올 수 있기 때문입니다.

이런 자료형에 모호성을 방지하기 위해 

템플릿을 사용합니다. 

 

▣ template 키워드를 넣어주시고 그 옆에 <typename T>로 하게 되면

T라는 자료형이라는 별칭을 저장하게 됩니다. 

 

▣ 그리고 자료형을 T sum(T num1, T num2) 이렇게 지정을 하고 

함수를 호출할때 값을 각각 정수와 실수를 넣어서 출력해보면

우리가 따로 자료형을 구분하지 않아도 템플릿을 통해 자동으로 지정해서 값이 반환이 됩니다. 

아주 편리한 기능입니다.

여기서 문제는 함수에 반환형을 정하고 싶을 때가 있습니다.

그럴 때는 이런 식으로

 

▣ sum <int>로 반환형 자료형을 지정해주면 return 값이 그 자료형에 맞게 출력되는 걸 확인할 수 있습니다. 

그래서 sum <int>(1.4, 4.5) 실수를 전달해주었음에도 불구하고 반환형 int형으로 값이 나오는 걸 확인할 수 있습니다.

 

▣ 그리고 이걸 sum <double>로 바꾸면 이렇게 실수형으로 값이 출력됩니다. 

 

▣ 여기까지가 함수 템플릿이었습니다. 

직접 템플릿을 선언하고 정의해서 연습해보세요.

728x90
반응형

댓글