반응형

함수 또는 클래스의 틀(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); // 
}

 

반응형

+ Recent posts