본문 바로가기
NC University/Advanced C++

1일차 - Template 부분 전문화

by 날쑤 2021. 6. 14.

  하나의 클래스 템플릿에서 타입에 따라 다른 형태의 클래스들이 생성

 
#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;
}