초안 : GGWABaeGi @김민수
2024년 6월 14일 오전 12:00 (GMT+9)
템플릿은 cpp에서 다형성을 위해 지원하는 기능으로, c#의 제너릭과 유사한 기능을 제공한다. 여기서 주목할 점은 상속과 달리 템플릿은 컴파일 타임에 이를 정의하기에 더 빠르다.
우선 템플릿은 추상과 비슷해보이나, 이는 내부적으로나 적용적인 측면으로나 같지 않다. 다만 템플릿의 특성상 다형성의 성질을 띈다.
std::vector는 템플릿 클래스로, 어떤 타입의 요소도 저장할 수 있습니다.일반 템플릿은 다양한 타입에 대해 동작할 수 있는 일반화된 코드를 작성할 때 사용.
#include
// 일반 템플릿
template <typename T>
class MyClass {
public:
void display(T value) {
std::cout << "General template: " << value << std::endl;
}
};
int main() {
MyClass intObj;
intObj.display(42); // General template: 42
MyClass doubleObj;
doubleObj.display(3.14); // General template: 3.14
return 0;
}
특수화된 템플릿은 특정 타입에 대해 다른 동작 을 정의하고 싶을 때 사용됩니다.
#include
// 일반 템플릿
template
class MyClass {
public:
void display(T value) {
std::cout << "General template: " << value << std::endl;
}
};
// 특수화된 템플릿
template <char>
class MyClass {
public:
void display(char value) {
std::cout << "Specialized template for char: " << value << std::endl;
}
};
int main() {
MyClass intObj;
intObj.display(42); // General template: 42
MyClass charObj;
charObj.display('A'); // Specialized template for char: A
return 0;
}