아래 코드는 template의 기본
T 대신에 다른 것도 사용가능 하지만 관례상 T를 많이 사용한다.
template parameter
call parameter
template<typename T>
T sqare(T a)
{
return a*a;
}
int main()
{
square<int>(3);
square<double>(3.3);
square(3); // 명시하지않으면 컴파일러가 추론한다
square(3.3);
}
템플릿은 함수를 만드는 틀로 컴파일러가 컴파일 시간에 필요한 타입의 함수를 생성하게 된다.
함수가 생성되는 과정을 '템플릿 인스턴스화' 라고한다.
구조체도 템플릿으로 만들 수 있다.
C++17 부터는 생성자가 있으면 템플릿 파라미터 전달을 생략할 수 있다.
template<typename T>
struct Pont
{
T x;
T y;
};
int main()
{
Point<int> pt;
pt.x = 1;
pt.y = 1;
}
'프로그래밍 > C++' 카테고리의 다른 글
[C++] constexpr (0) | 2021.07.25 |
---|---|
[C++] 후위 반환 타입 (0) | 2021.07.25 |
[C++] structured binding (0) | 2021.07.21 |
[C++] typedef, using (0) | 2021.07.19 |
[C++] namespace (0) | 2021.07.19 |