반응형
템플릿이란?
템플릿은 클래스나 함수를 일반화하여
재사용할 수 있도록 해주는 기능입니다.
템플릿을 통해 코드의 일부를 독립적으로 작성할 수 있으며,
이를 통해 일반적인 알고리즘 또는 자료 구조에
유연하게 적용할 수 있다.
클래스 템플릿
클래스 템플릿은 클래스를 정의하는 템플릿이다.
클래스 템플릿을 사용해 멤버 변수와 멤버 함수의 타입을
템플릿 매개변수로 지정한 일반화된 형태로 작성할 수 있다.
템플릿 매개변수는 클래스 내에서 사용되는 데이터 타입을 나타내며,
템플릿을 인스턴스화할 때 실제 타입으로 대체된다.
이렇게 생성된 클래스의 인스턴스는 지정된 타입에 맞게 동작하며,
동일한 코드를 다양한 타입에 대해 재사용가능하다.
함수 템플릿
함수 템플릿은 함수를 정의하는 템플릿이다.
함수 템플릿을 사용하면 함수의 매개변수와 반환되는 데이터 타입을
템플릿 매개변수로 지정하여 일반화된 형태로 작성 가능하다.
함수 템플릿을 인스턴스화할 때 실제 타입으로 대체되며,
해당 타입에 맞는 코드가 생성된다.
템플릿의 장점
템플릿을 사용하면 코드의 재사용성과 유연성을 높일 수 있다.
데이터 타입에 독립적인 알고리즘과 자료 구조를 만들어
다양한 타입에 대해 재사용 가능하며, 타입 오류를 컴파일 타임에
확인할 수 있는 강한 타입 검사도 가능하다.
템플릿은 C++의 강력한 기능 중 하나로,
제네릭 프로그래밍을 구현하는데 널리 활용된다.
아래의 코드는 템플릿의 예제이다.
// 클래스 템플릿
template <typename T> // 템플릿 매개변수 T
class Pair {
private:
T first;
T second;
public:
Pair(T f, T s) : first(f), second(s) {}
T getFirst() const { return first; }
T getSecond() const { return second; }
};
// 함수 템플릿
template <typename T> // 템플릿 매개변수 T
T getMax(T a, T b) {
return (a > b) ? a : b;
}
int main() {
// 클래스 템플릿 사용 예제
Pair<int> intPair(10, 20);
std::cout << "First: " << intPair.getFirst() << ", Second: " << intPair.getSecond() << std::endl;
Pair<std::string> stringPair("Hello", "World");
std::cout << "First: " << stringPair.getFirst() << ", Second: " << stringPair.getSecond() << std::endl;
// 함수 템플릿 사용 예제
int num1 = 10, num2 = 20;
std::cout << "Max: " << getMax(num1, num2) << std::endl;
double num3 = 3.14, num4 = 2.71;
std::cout << "Max: " << getMax(num3, num4) << std::endl;
return 0;
}
반응형
반응형
'C++' 카테고리의 다른 글
생성자와 소멸자 (0) | 2023.06.01 |
---|---|
참조자(Reference) (0) | 2023.05.30 |
네임스페이스(namespace) (0) | 2023.05.30 |
입출력 (0) | 2023.05.30 |
객체에 대한 이해 (0) | 2023.05.30 |