[c++] 구조체와 클래스의 템플릿 특수화
C++ 템플릿은 일반적인 데이터 타입이나 기능에 대해 추상화되어 있는 코드를 작성하는 데 사용됩니다. 템플릿을 특수화하면 특정한 형식에 대해 명시적인 구현을 제공할 수 있습니다. 이는 C++ 프로그래밍에서 매우 유용하며, 구조체와 클래스에 대해서도 동일하게 적용됩니다.
구조체(struct) 템플릿 특수화
다음은 구조체 템플릿의 특수화 예제입니다.
#include <iostream>
using namespace std;
template <typename T>
struct MyStruct {
void print() {
cout << "Generic template" << endl;
}
};
// 구조체 템플릿 특수화
template <>
struct MyStruct<int> {
void print() {
cout << "Specialized template for int" << endl;
}
};
위 코드에서 MyStruct
는 템플릿으로 정의되었고, int
형식에 대한 특수화가 제공되었습니다.
클래스(class) 템플릿 특수화
동일한 방식으로 클래스 템플릿을 특수화할 수도 있습니다.
template <typename T>
class MyClass {
public:
void print() {
cout << "Generic template" << endl;
}
};
// 클래스 템플릿 특수화
template <>
class MyClass<char> {
public:
void print() {
cout << "Specialized template for char" << endl;
}
};
위의 예제에서 MyClass
는 템플릿으로 정의되었고, char
형식에 대한 특수화가 제공되었습니다.
템플릿 특수화를 사용하면 일반적인 동작을 원하는 경우에는 일반 템플릿을 사용하고, 특정 형식에 대한 다른 동작을 원하는 경우에는 특수화된 버전을 사용할 수 있습니다. 이는 다형성을 활용하여 더 유연하고 강력한 코드를 작성할 수 있게 해줍니다.
더 많은 정보를 원하신다면 C++ 템플릿 특수화를 참고하시기 바랍니다.