템플릿 인자와 템플릿 파라미터

반응형
argument 와 parameta...
코드는 "인자를 전달하여 파라미터로 만든다."
떄로는 인자를 실제 파라미터, 파라미터를 형식적 파라미터라고 부르기도 한다.

template <typename T, int N>
class ArrayInClass{
public :
  T array[N];
};

int main()
{
  ArrayInClass<double, 10> ad;
}

- 템플릿 파라미터는 템플릿 선언이나 정의에서 키워드 template 다음에 나열된 이름들이다.
   위의 예에서는 T와 N이 된다.
- 템플릿 인자는 템플릿 파라미터의 자리에 대신 들어갈 아이템이다.
   위의 예에서는 double와 10이다.

기본적으로 모든 템플릿 인자는 컴파일시에 결정될 수 있는 양이나 값이어야 한다.
템플릿 파라미터는 컴파일할 때 결국 값으로 치환되므로 이들은 컴파일 시 표현식을 형성하기 위해 사용될 수 있다.
이러한 법칙 때문에 ArrayInClass 템플릿에서 멤버 배열인 array의 크기가 컴파일 시에 결정될 수 있었던 것이다.

템플릿 파라미터는 컴파일 시에 정해지는 실체이기 때문에 유효한 템플릿 인자를 생성할 때에도 템플릿 파라미터가 사용될 수 있다.
ex)
template <typename T>
class Tester
{
public:
   ArrayInClass<T,12> array;
};

위의 예제에서 이름 T는 템플릿 파라미터이기도 하면서 템플릿 인자이기도 하다.
이러한 방법은 데이터형과 함수를 모아 다른 데이터형으로 만드는 방식과 근본적으로 같다.
TAGS.

Comments