반응형
함수 또는 클래스의 틀(template)을 제공하는 방법
- 매크로(macro) 사용
- 전처리기(pre-processor)가 코드를 생성
- 전처리기는 함수 인자를 통해서 타입을 추론 할 수 없음
// 함수를 만드는 틀
#define MAKE_SQUARE( T ) \
T square(T a) \
{ \
return a * a; \
}
// 틀에 타입을 전달해서 함수를 생성한다.
MAKE_SQUARE(int)
MAKE_SQUARE(double)
int main()
{
square(3);
square(3.3);
}
- 템플릿(template) 사용
- 컴파일러가 코드를 생성
- 컴파일러는 함수 인자를 통해서 타입을 추론할 수 있음
template<typename T> // typename 대신 class로 사용해도 됨
T square(T a)
{
return a * a;
}
int main()
{
square<int>(3); // int square(int) 생성
square<double>(3.3); // double square(double) 생성
square(3); // 인자 타입 추론으로
square(3.3); //
}
반응형
'프로그래밍 언어 > C++' 카테고리의 다른 글
C++ 템플릿 인스턴스화(Template Instantiation) (0) | 2019.05.21 |
---|---|
C++ 템플릿(template) 필요성 (0) | 2019.05.21 |
C++ 파일 입출력(file stream), fstream, ifstream, ofstream (0) | 2019.05.14 |
C++ 입출력(iostream), std::cin, std::cout (0) | 2019.05.14 |
C++ 예외처리(Exception), noexcept, try, catch, throw (0) | 2019.05.14 |