초안 : GGWABaeGi @김민수

2024년 6월 14일 오전 12:00 (GMT+9)

템플릿

템플릿은 cpp에서 다형성을 위해 지원하는 기능으로, c#의 제너릭과 유사한 기능을 제공한다. 여기서 주목할 점은 상속과 달리 템플릿은 컴파일 타임에 이를 정의하기에 더 빠르다.

객체지향 관점에서의 템플릿 사용 이유

우선 템플릿은 추상과 비슷해보이나, 이는 내부적으로나 적용적인 측면으로나 같지 않다. 다만 템플릿의 특성상 다형성의 성질을 띈다.

1. 일반 템플릿

일반 템플릿은 다양한 타입에 대해 동작할 수 있는 일반화된 코드를 작성할 때 사용.

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


2. 특수화된 템플릿 (명시적 특수화)

특수화된 템플릿은 특정 타입에 대해 다른 동작 을 정의하고 싶을 때 사용됩니다.

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