템플릿 인자와 템플릿 파라미터
반응형
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는 템플릿 파라미터이기도 하면서 템플릿 인자이기도 하다.
이러한 방법은 데이터형과 함수를 모아 다른 데이터형으로 만드는 방식과 근본적으로 같다.
코드는 "인자를 전달하여 파라미터로 만든다."
떄로는 인자를 실제 파라미터, 파라미터를 형식적 파라미터라고 부르기도 한다.
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는 템플릿 파라미터이기도 하면서 템플릿 인자이기도 하다.
이러한 방법은 데이터형과 함수를 모아 다른 데이터형으로 만드는 방식과 근본적으로 같다.
'Study > Template' 카테고리의 다른 글
인스턴스화와 특수화 (0) | 2010.07.06 |
---|---|
함수 템플릿에 문자열 리터럴을 인자로 사용. (0) | 2010.07.02 |
템플릿 템플릿 파라미터 (0) | 2010.06.30 |
데이터형이 아닌 클래스 템플릿 파라미터 (2) | 2010.06.25 |
기본 템플릿 인자 (0) | 2010.06.25 |
TAGS.