▣ 안녕하세요. 이번장에서는 템플릿에 대해 공부해보도록 하겠습니다.
C++에서 함수를 작성하다 보면 함수의 이름을 동일하게 만드는 경우가 있습니다.
같은 의도로 다른 자료를 받는 경우에 그렇습니다.
그걸 오버 로딩이라고 하는데 이럴 경우 반환형이나 매개변수에 자료형(데이터 타입)을
모두 다 다르게 하여 구분을 해서 함수를 만들기도 합니다.
하지만 우리가 모든 자료형(데이터 타입)의 경우의 수를 다 생각하고 함수를 만들 수는 없습니다.
그렇기 때문에 템플릿을 사용해야 합니다.
템플릿은 형판이라는 뜻을 가지고 있으며,
함수에서 매개변수에 자료형 타입만 다른 중복된 함수들을 일반화시킨 틀을 템플릿이라고 합니다.
설명만 들으면 어려울 수 있으니 코드를 작성하며 공부해보도록 하겠습니다.
▣ 템플릿을 작성하려면 template 키워드를 사용해야 합니다.
그리고 <typename T>코드에서처럼 <typename 타입 이름>을 넣어주셔서서 작성해야 합니다.
바로 밑에 함수를 만들 때 반환형 매개변수 자료형(데이터 타입) 자리에 템플릿으로 작성한 T 이름을 넣으면 됩니다.
메인 함수에서 함수를 호출할 때 sum(10, 20), sum(5.5, 7.2) 코드에서처럼 정수형과 실수형을 각각 매개변수로 전달합니다.
디버그를 해보면 각각 자료형에 맞게 값이 연산하여 출력되는 걸 확인할 수 있습니다.
정수형은 정수형으로 실수형은 실수형 형식으로 말이죠.
▣ 이번에는 typename이 아닌 class로 지정해서 템플릿을 만들어 보겠습니다.
typename자리에 <class T>를 넣어서 작성하시면 됩니다.
메인 함수를 살펴보면 달라진 부분이 있습니다.
sum <int>(10,20)로 되어 있는데 이건
함수를 호출할 때 명확하게 어떤 반환형(자료형)을 쓸지 <> 안에 표시하기 위함입니다.
그럼 내가 지정한 반환형 형식대로 템플릿 자료형을 반환하게 됩니다.
C++98에서 추가된 typename 키워드 이전에는 class 키워드를 사용했습니다.
C++ 컴파일러는 템플릿 정의 내의 typename 키워드와 class 키워드를 같은 템플릿으로 진행합니다.
템플릿의 장점으로는 생산성이 높고 유지보수 편리합니다. 하지만 단점으로는 컴파일 속도가 느려지는 단점이 있습니다.
'[ C++ ] > - C++ 문법공부' 카테고리의 다른 글
C++ 17장 [프렌드 함수] (0) | 2022.11.18 |
---|---|
C++ 16장 [static 멤버 변수, 함수] (2) | 2022.11.16 |
C++ 15장 [디폴트 매개변수] (0) | 2022.11.11 |
C++ 14장 [복사생성자] (0) | 2022.11.11 |
C++ 13장 [참조변수] (0) | 2022.11.04 |
댓글