클래스 템플릿이란 무엇인가? 함수 템플릿 처럼, 클래스도 여러개의 데이터형으로 바뀔 수 있는 것을 말한다. 이러한 클래스 템플릿은 컨테이너류에 가장 많이 쓰이며, 대표적인 것으로는 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..
템플릿 특수화 검색 결과
해당 글 3건
3장, 클래스 템플릿
책 정리/C++ Template
2009. 5. 5. 19:31
항목 4 : 확장 가능한 템플릿 : 상속을 통해서 아니면 특성(traits) 클래스를 통해서? ( 난이도 : 7 )
어떤 기능,역활, 상태를 클래스에 부여하기 위해서, 상속이나 특성 클래스를 사용 한다. 이러한 클래스들에 제약을 두어서, 원하는 클래스만이 사용될 수 있게 하는 기술에 대한 이야기가 바로 항목 4이다. 이야기를 하기 위해서 5가지의 질문에 답해보고 생각해 보기 바란다고, 책에선 설명하고 있다. 1. 특성 클래스(traits class)의 정의는? C++98 17.1.18에서, 클래스 템플릿과 함수 템플릿이 받아들이는 타입을 조작하기 위해, 필요한 타입과 함수의 집합을 포함하는 클래스라고 규정했다. 예를 들면, iterator_traits 도 있고, not1에 넣을때 .. 몇몇 특성 클래스도 있고. 잘 사용하지 않아서 예는 잘 못들겠네; 2. 아래 클래스 템플릿이 있다. 템플릿 매개변수가 T* Clone(..
책 정리/More Exceptional C++
2008. 12. 22. 15:15
C++ 템플릿 : 템플릿 특수화 개념 잡기
템플릿 특수화란? 템플릿 매개변수에 따라 컴파일러가 템플릿 코드 선택해 줄수 있게 해주는 기법을 말한다. 템플릿 특수화는 여러가지 용도로 사용 되는데, 포인터 타입이 들어오거나, 특정 타입을 받았을 경우, 특수화된 템플릿이 인스턴스화 되게 할 수 있다. 굳이 비교를 하자면, C 언어의 if 문 같은 녀석이다. (메타 프로그래밍에선 이 특수화를 감칠맛 나게 응용한다.) 템플릿 특수화를 어떻게 만드나? 예제코드를 보자. #include // 일반 클래스 템플릿 template class ikpil { public: ikpil() { using namespace std; cout
책 정리/C++ Template
2008. 12. 18. 15:51
최근댓글