Template specialization
: class template 을 arguments에 따라서 customizing 하는 기법
먼저 위 예제의 첫 번째 template 선언처럼
일반적인 template 선언은 primary template 이라 한다.
Specialization 은 2 가지로 나눌 수 있다.
1) T의 포인터 타입을 argument 로 받고 싶다면?
Partial specialization(부분 전문화)를 사용한다.
물론 T&, T&& 도 partial specializtion 을 이용한다.
2) 데이터 타입까지 정해진 argument 로 template 을 정의한다면?
template specialization 을 사용한다.
실제로 위에서 T* 에 대한 template code는 하나지만,
컴파일하면 기계어코드로는 int*, char* 2가지 code가 존재한다.
결국엔 template code 가 아무리 많아도,
컴파일 이후에 만들어지는 기계어 코드는 사용하는 class type의 개수에 의존적이다.
피드 구독하기:
댓글 (Atom)
[C++] meta programing
재귀 호출에 관해 template meta programming 을 적용한 예제를 살펴보자. #include using namespace std; int fact(int n){ if(n factorial 연산을 하는 일반적인 재귀 호출 함...
-
Smart Pointer : 포인터처럼 동작하며 자동으로 메모리를 해제하고 안전하게 resource를 관리하도록 돕는 객체 포인터는 소멸자가 호출되지 않아 memory leak이 발생한다. Java, C#같은 VM이 있는 언어는 VM에서 G...
-
nullptr 란? C++11 에서 지원하는 null pointer 상수 먼저 pointer 가 초기화될 수 있는 정수 값을 살펴보자. 정수 0은 모든 타입의 포인터에 암시적 형변환을 통해서 초기화 값으로 사용될 수 있다. 하지만 그 이...
-
자료 구조를 순회하여 데이터에 접근하는 방법을 살펴보자. Container 에 저장된 데이터에 접근하기 위해 대표적으로 Iterator의 begin(), end() function 을 사용한다. 하지만 위 예제에서 show() 함수에 배열이...
댓글 없음:
댓글 쓰기