템플릿 인자는 템플릿이 인스터스화 될 때, 그 파라미터의 값을 말한다. 이 템플릿 인자는 다음 4가지 방식에 의해서 결정 될 수 있다. 1. 명시적 지정에 의한 결정 template class ClassTemplate { public: typedef T TemplateParameter; }; int main( void ) { // 명시적 템플릿 인자 int ClassTemplate testObj; return 0; } 이렇게 명시적으로 말한것을 뜻한다. 2. 삽입된 클래스 이름에 의한 결정 template class ClassTemplate { public: // ClassTemplate 범위에서 ClassTemplate 이란 이름은 // 자동적으로 인스턴스화될 때의 인자를 부여 받는다. // 그러므로 ..
CPPT 검색 결과
인라인이 무엇인지 알기(exceptional C++ 에 무척 자세히 나온다: 항목 25 : inline 해부 http://www.ikpil.com/821)기 때문에 생략 한다. 템플릿의 특성상 번역단위마다 코드 인스턴스화가 일어 나지만, 동일한 인스턴스일 때는 단 1개의 정의로 컴파일러는 관리 한다. 그러므로 대부분의 컴파일러에서 "재정의 오류"가 일어나지 않는다. 일어 나는 컴파일러도 있다고 책에 적혀 있지만, 그건 프로그래머 잘못이 아니다. .. 그러므로 프로그래머는 당장 컴파일러를 바꾸어야 한다.(이건 책에 내용이 없다 : ) ) 하여튼, 번역단위마다 코드 인스턴스화가 일어 난다고 해서 자동으로 인라인이 된다고 착각 할 수 있다. 이 착각은 인라인과 동일하게 번역 단위마다 코드 붙이기가 일어 난다고..
개요 5.4 템플릿 템플릿 파라미터 5.5 0 초기화 5.6 함수 템플릿에서 문자열 리터럴을 인자로 사용 5.4 템플릿 템플릿 파라미터 ( template template paramater ) 내가 보는 책은 "C++ Template" 이다. 이 책에 이번 주제인 template tempalte paramater 를 설명하고 있는데, 난 차례대로 "이것이 바로 템플릿 템플릿 파라미터이다" 라고 말해주는 코드를 컴퓨터에 입력 했다. #include template class Stack { private: CONT m_; }; int main( void ) { Stack stack; return 0; } 그리고 이것을 컴파일 해보면, 알겠지만, 클래스 템플릿의 두번째 템플릿 파라미터가 템플릿인 것이 보인다...
개요 저번장까지 이건 이렇고 저건 저렇다 라고 설명한 한 항목이였다. 이번 장은, 실질적으로 코드를 작성하는데 도움이 될 만한 몇가지 문법 들을 설명한다. 5.1 typename 5.2 this 5.3 멤버 템플릿 5.4 템플릿 템플릿 파라미터 5.5 0 초기화 5.6 함수 템플릿에서 문자열 리터럴을 인자로 사용 본문 5.1 typename이란 무엇이고, 어떤 용도인가? 지금까지 typename 은 템플릿 파라미터를 선언할 때 사용하는 키워드로 알고 있었지만, 여기에 한가지 의미가 더 있었다. 바로 "이것은 타입이다" 라고 알려 주는 의미이다. "이것은 타입이다"라는 의미가 왜 필요한가? 만약, 템플릿 파라미터가 클래스일 떄, 그 내부 타입이, "타입" 이라고 일러주지 않는 다면, 컴파일러가 에러를 벹어..
개요 지금까지 함수, 클래스 템플릿의 파라미터는 데이터형만 있는 것처럼 정리하였으나, 일반값도 있다. 이번 장은 데이터 형이 아닌 템플릿 파라미터란 무엇이고, 어떻게 사용하며, 주의해야 할 사항에 대해서 정리 되어 있다. 본문 데이터형이 아닌 템플릿 파라미터는 무엇인가? 상수로 평가되는 모든 값들이다. 하지만 예외적으로, 부동소수점(float, double) 상수와 문자열 상수(char *, wchar_t *)는 템플릿 파라미터로 사용 할 수 없다. 그래서 코드짜면 다음과 같이 코딩 할 수 있다. // 데이터형이 아닌 템플릿 파라미터 template class Stack { private: T elems[MAXSIZE]; }; 여기서 보듯이 첫번째 템플릿 파라미터는 데이터형이지만, 두번째 파라미터는 인트..
{ 이번 장은 "1부, 템플릿 기본"에 속해 있다. 함수 템플릿이 무엇인가? 다양한 데이터형에 호출 되는 함수이다. 어떻게 함수 템플릿을 정의 하는가? 다음 처럼 정의 할 수 있다. // function family definition template T const& max( T const & a, T const& b ) { return a < b ? b : a; } 우선 fuction family 는 함수 템플릿을 가리키는 말인 것을 밝힌다. const 의 사용 법은 1장에서 말했던 규칙 데로 사용 됬다. 본론으로 들어와서 max 함수 템플릿은 a 와 b 중 큰 값을 리턴하며, 이때 a와 b의 타입은 아직 정해지지 않았으며, 타입을 typename T로 파라미터화 했다. 이 typename T를 템플릿..
최근댓글