Introduction C++ 컴파일러가 템플릿을 인스턴스화 하는 규칙을 설명하고 있다. 이 규칙은 무척 많은 세부사항으로 이루어져 있다. 각 세부사항들을 알아 본다. Content 1. 템플릿은 두 단계 룩업을 한다. 템플릿 코드는 템플릿을 파싱 할 때, 1차 룩업을 하고, 인스턴스화가 될 때 2차 룩업을 하여, 이름을 찾는다. 1차 룩업을 할 땐, 일반적인 룩업(영역에서 이름 찾기)과 ADL(인자 이름으로 이름 영역 끌고 오기)를 한다. 2차 룩업을 할 땐, 종속된 이름에서 룩업을 하고, 한정되지 않은 이름을 위해서 ADL이 추가로 수행 된다. .. 이 말의 무슨 말이고 하면, 코드를 보자. // ikpil.com class NoTempalte { int notemplate_field; // 1 };..
C++ Template 검색 결과
Introduction 이번 장은 템플릿이 언제 어떻게 실체화 되는지에 대해서 정리한 것이다. 이것을 알아야 하는 이유는 "템플릿의 가시화가 되지 않았기 때문에 컴파일이 되지 않는다" 라는 직관을 길르기 위해서이다. 총 5 파트의 정리가 있는데, 이번 파트에선 "주문형 인스턴스화" 만을 정리 한다. Content 주문형 인스턴스화 우선 "인스턴스화 : instantiation" 이 어떤 단어인지 정의 해야 한다. 이 것은 실체화 라고 이해 하면 된다. C++ Template 에선 템플릿 코드가 실체화 되는 것을 인스턴스화 : instantiation 라고 한다. 여기서 말하는 주문형은, 프로그래머가 요구한 주문에 대해서 인스턴스화 되는 것을 뜻한다. - 원어가 어떻게 되어 있는지는 못찾겠다. : | 쉽게..
개요 지금까지 함수, 클래스 템플릿의 파라미터는 데이터형만 있는 것처럼 정리하였으나, 일반값도 있다. 이번 장은 데이터 형이 아닌 템플릿 파라미터란 무엇이고, 어떻게 사용하며, 주의해야 할 사항에 대해서 정리 되어 있다. 본문 데이터형이 아닌 템플릿 파라미터는 무엇인가? 상수로 평가되는 모든 값들이다. 하지만 예외적으로, 부동소수점(float, double) 상수와 문자열 상수(char *, wchar_t *)는 템플릿 파라미터로 사용 할 수 없다. 그래서 코드짜면 다음과 같이 코딩 할 수 있다. // 데이터형이 아닌 템플릿 파라미터 template class Stack { private: T elems[MAXSIZE]; }; 여기서 보듯이 첫번째 템플릿 파라미터는 데이터형이지만, 두번째 파라미터는 인트..
클래스 템플릿이란 무엇인가? 함수 템플릿 처럼, 클래스도 여러개의 데이터형으로 바뀔 수 있는 것을 말한다. 이러한 클래스 템플릿은 컨테이너류에 가장 많이 쓰이며, 대표적인 것으로는 std::vector 가 있겠다. 클래스 템플릿을 어떻게 선언하는가? template class Stack { //... }; 위에 처럼 선언할 수 있으며, typename 대신 class 를 사용 할 수 있다. 여기서 T는 멤버 함수나 멤버 변수를 선언 할 때 사용 된다. 즉, 다음과 같이 사용 될 수 있다. #include template class Stack { public: Stack(); void push(T const & ) ; void pop(); T top() const; private: std::vector e..
{ 이번 장은 "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를 템플릿..
들어가기에 앞서저자들에 대한 소개와, 책의 구성, 읽는 방법등을 설명하고, 이 책에서 사용된 코딩 스타일에 대해 몇가지 언급을 하는 항목이다. 이 중, 코딩 스타일에서 const 사용에 대해서 언급한 부분이 마음에 들어 정리 한다.책에서 언급하는 const 사용 방법 예시 int main( void ) { int normal_int = 100; const int const_int = 100; int const int_const = 100; const int * const_int_pointee = &const_int; int const * int_const_pointee = &int_const; int * const int_pointee_const = &normal_int; // 이 경우 CHARS를 ch..
최근댓글