'템플릿'에 해당되는 글 1건

  1. 2011.05.31 Loki : 템플릿 특수화
2011.05.31 10:12

#include <TypeManip.h>

 

Type2Type - 템플릿의 특수화를 위해 사용한다.

.정의부는 다음과 같다.

 

template <typename T>

struct Type2Type

{

    typedef T OriginalType;

};

 

-함수 호출에따른 복사 생성자 호출 비용을 최소화 하기 위해 사용할 수 도 있다는 글을 읽었다. 템플릿의 이점.

 

-여기서 간단한 예제로 Type2Type의 사용법을 보겠다.

 만약 무언가를 생성하는 Create함수가 있다고 하고 이것을 template 함수로 구현해보자.(책의 소스다!)

 

template <class T, class U>

T* Create(const U& arg)

{//이 함수는 T클래스의 생성자에게 U클래스의 레퍼런스인

 //arg인자를 넘겨주면서 새 객체를 만든다.

   return new T(arg)

}

-이것에 대해 생성자가 두개의 인자를 받는 함수로 특수화 해보자.

주의! 멤버 함수는 부분적으로 특화시킬 수가 없다.

그렇기 때문에 여기에 Type2Type를 사용해 특화 시킨다.

template <class T, class U>

T* Create(const U& arg, Type2Type<T>)

{ //Type2Type으로 T형의 더미 객체를 넘겨준다

   return new T(arg);

}

template <class U>

Widget* Create(const U& arg, Type2Type<Widget>)

{//2개의 인자를 전달 받고 2번째 매개변수가  

 //고정된 값을 갖는 Widget자료형에 대해 특화시킴

   return new Widget(arg,-1);

}

 

-최종 사용법

String* str = Create("Hi", Type2Type<String>());

Widget* pw = Create(100, Type2Type<Widget>());

출처 : - http://yanomami.tistory.com/category/Loki -

신고
Posted by 우엉 여왕님!! ghostkyow

티스토리 툴바