하나의 클래스 템플릿에서 타입에 따라 다른 형태의 클래스들이 생성
#include <iostream>
using namespace std;
// primary template
template<typename T> class Stack
{
public:
void Push() { cout << "T" << endl; }
};
// parital specialization (부분전문화)
template<typename T> class Stack<T*>
{
public:
void Push() { cout << "T*" << endl; }
};
// specialization (전문화)
template<> class Stack<char*>
{
public:
void Push() { cout << "char*" << endl; }
};
int main(int argc, char* argv[])
{
Stack<int> s1; s1.Push(); //< T
Stack<int*> s2; s2.Push(); //< T*
Stack<char*> s3; s3.Push(); //< char*
return 0;
}
'NC University > Advanced C++' 카테고리의 다른 글
1일차 - TypeTraits (3) | 2021.06.14 |
---|---|
6일차 - 단위전략 기반의 클래스 디자인 (0) | 2015.11.24 |
6일차 - thin template (0) | 2015.11.04 |
6일차 - CRTP (Curiosly Recurring Template Pattern) (0) | 2015.10.30 |
6일차 - checked delete (0) | 2015.10.21 |