템플릿(template)
함수나 클래스를 여러 번 다시 작성하지 않도록, 어떤 자료형이던 받아서 사용할 수 있도록 만들어 놓은 틀이다.
오버로딩되서 사용되는 함수를 템플릿화 시켜서 사용할 수도 있다.
template<typename T> //템플릿 사용법
static void Shuffle(T* deck)
{
.
.
.
}
template의 typename을 T로 하겠다는 뜻이며, typename은 본인이 원하는 typename으로 바꿔서 사용할 수 있다.
그리고 위의 예시로 Shuffle() 함수를 템플릿화 시킬 건데, 여기서 중요한 건 매개변수이다.
매개변수의 자료형이 T인 것을 볼 수 있다. 이렇게 템플릿의 typename T로 자료형을 해두면,
Shuffle() 함수를 호출할 때 받아오는 어떠한 값의 자료형이던 알아서 치환돼서 실행이 된다.
이런 템플릿은 클래스를 따로 만들어 그 안에서 쓴다고 한다. 그래서 보통 Utility 클래스를 만들어서 그 안에서 만든다.
하지만 템플릿은 선언과 정의을 헤더 파일(.h)와 소스 파일(.cpp)로 나눠서 할 수 없다.
그렇게 되면 Shuffle() 함수는 여러 번 컴파일이 되어서 정의가 중복되는데, 이를 막고자 함수의 반환형 앞에 static을
붙혀서 쓴다.
'C++' 카테고리의 다른 글
C++ 배우기 23(생성자, 소멸자) (0) | 2022.11.24 |
---|---|
C++ 배우기 22(static) (0) | 2022.11.23 |
C++ 배우기 20(헤더 / 소스 파일 나누기) (0) | 2022.11.16 |
C++ 배우기 19(객체지향프로그래밍, class) (0) | 2022.11.15 |
C++ 배우기 18(STL, vector) (0) | 2022.11.09 |