8.1(수) C++ - template 전문화

from Study/C++ 2007/08/02 18:05 view 20525

// template 전문화가 요즘들어 인기를 얻고 있는 이유. - 메타의 세계

// 컴파일시간에 어떤일을 수행하게 하는 기법. 컴파일시간은 오래 걸리지만

// 실행시간이 단축된다. 주로 전문화를 사용해서 컴파일 재귀호출을 사용한다.

// 하지만 컴파일 역량이 있기 때문에 9번이상?? 은 안된다. 왜그렇까..컴파일 하기 싫은가..


template
<int n> class Pow

{

public:

        enum { result = n * Pow<n-1>::result };

};

 

template<> class Pow<0>

{

public:

        enum { result = 1 };

};

 

void main()

{

        int n = Pow<5>::result;


       
cout << n << endl;

}

 

/////////////////////////////////////////////////////////////////

// Template 전문화( 특화, Specialization ).

template<typename T, typename T2> class Test {};     // 1

template<typename T> class Test<T, int> {};          // 2

 

Test<int, double> t1;  // 1

Test<int, int> t2;     // 2

 

// Primary Template

template<typename T> class Stack

{

        T* buf;

};

 

// 전문화 Template

template<> class Stack<int>

{

};

 

// 부분전문화- 모든 포인터는 이 클래스 사용

template<typename T> class Stack<T*>

{

        T* buf;

};

 

void main()

{

        Stack<int> s;

}

 

Tag |

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다