반도체/C++

17. C++의 템플릿

Clair_de_Lune 2024. 7. 29. 14:02
728x90

C++의 템플릿은 코드의 재사용성을 높이고, 다양한 데이터 타입에 대해 일반화된 함수를 작성할 수 있도록 하는 강력한 기능입니다.

 

템플릿을 사용하면 특정 데이터 타입에 의존하지 않고, 여러 타입에 대해 동일한 로직을 적용

 

주로 함수 템플릿과 클래스 템플릿 두 가지 유형

 

 

1. 함수 템플릿 (Function Templates)

함수 템플릿은 다양한 데이터 타입에 대해 동일한 함수를 작성할 수 있게 해줍니다. 함수 템플릿을 정의할 때는 template 키워드를 사용합니다.

 

#include <iostream>
using namespace std;

// 함수 템플릿 정의
template <typename T>
T add(T a, T b) {
    return a + b;
}

int main() {
    cout << "Int: " << add(3, 4) << endl; // int 타입
    cout << "Double: " << add(3.5, 4.2) << endl; // double 타입
    return 0;
}

위 예제에서 add 함수는 T라는 템플릿 매개변수를 사용하여 정수와 실수 모두에 대해 작동

 

 

 

 

2. 클래스 템플릿 (Class Templates)

클래스 템플릿은 다양한 데이터 타입에 대해 일반화된 클래스를 정의할 수 있게 해줍니다. 클래스 템플릿도 template 키워드를 사용하여 정의

 

 

 

 

#include <iostream>
using namespace std;

// 클래스 템플릿 정의
template <typename T>
class Box {
private:
    T value;
public:
    Box(T v) : value(v) {}
    T getValue() {
        return value;
    }
};

int main() {
    Box<int> intBox(123); // int 타입 박스
    Box<double> doubleBox(456.78); // double 타입 박스

    cout << "Int Box: " << intBox.getValue() << endl;
    cout << "Double Box: " << doubleBox.getValue() << endl;

    return 0;
}

템플릿의 장점

  1. 코드 재사용성: 동일한 로직을 여러 데이터 타입에 대해 사용할 수 있으므로 코드 중복을 줄일 수 있습니다.
  2. 유연성: 다양한 데이터 타입에 대해 동작할 수 있는 코드를 작성할 수 있습니다.
  3. 타입 안전성: 컴파일 타임에 타입 체크가 이루어져, 런타임 오류를 줄일 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C++ 템플릿은 함수와 클래스를 일반화하여 다양한 데이터 타입을 처리할 수 있게 해주는 기능입니다. 이를 통해 코드의 재사용성과 유연성을 극대화할 수 있으며, 타입 안전성도 유지

728x90