본문 바로가기
💻 programming/c++

[c++] template specialization

by 연구원-A 2020. 12. 15.
반응형

Template Specialization

Template Specialization in C++ - GeeksforGeeks

템플릿을 이용하면 데이터 타입에 무관한 함수 또는 클래스를 만들 수 있습니다. 그런데 만약 특정 데이터 타입에 대해서만 다른 코드를 작성하고 싶으면 어떡해야 할까요? 

예제 코드

함수 템플릿 예제

#include <iostream> 
using namespace std; 

template <class T> 
void fun(T a) 
{ 
   cout << "The main template fun(): " 
        << a << endl; 
} 

template<> 
void fun(int a) 
{ 
    cout << "Specialized Template for int type: "
         << a << endl; 
} 

int main() 
{ 
    fun<char>('a'); 
    fun<int>(10); 
    fun<float>(10.14); 
}

클래스 템플릿 예제

#include <iostream> 
using namespace std; 

template <class T> 
class Test 
{ 
  // Data memnbers of test 
public: 
   Test() 
   { 
       // Initialization of data members 
       cout << "General template object \n"; 
   } 
   // Other methods of Test 
}; 

template <> 
class Test <int> 
{ 
public: 
   Test() 
   { 
       // Initialization of data members 
       cout << "Specialized template object\n"; 
   } 
}; 

int main() 
{ 
    Test<int> a; 
    Test<char> b; 
    Test<float> c; 
    return 0; 
}
반응형

'💻 programming > c++' 카테고리의 다른 글

[c++] variadic template (가변 길이 템플릿)  (0) 2020.12.15
[c++] functor (function object)  (0) 2020.12.15
[c++] template  (0) 2020.12.15
[c++] any  (0) 2020.12.15
[c++] optional  (0) 2020.12.15

댓글