반응형
    
    
    
  함수 또는 클래스의 틀(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 |