C++

템플릿(C++)

workbench34 2024. 12. 30. 20:10

 템플릿이란 어떤 것을 만들 때 안내 역할을 하는, 사용상의 형식. 형판, 형틀, 어떤 특정한 모양을 만들기 위해 만들어진 틀을 말한다. C++에서도 이 의미와 비슷하게 사용된다.

 C++템플릿은 코드의 재사용성을 극대화하고, 타입 안전성을 보장하며, 컴파일 시간에 타입을 결정하는 강력한 기능이다. 템플릿을 사용하면 개발자는 타입에 독립적인 코드를 작성할 수 있게 되어, 다양한 데이터 타입에 대해 동일한 함수나 클래스를 사용할 수 있다.
 대략적인 내용을 알겠으니 더 자세히 알아보자.

 

  • 코드 재사용성: 동일한 알고리즘을 다양한 데이터 타입에 적용할 수 있어 코드 중복을 줄인다.
  • 타입 안전성: 컴파일 시점에 타입 오류를 검출하여 프로그램의 안정성을 높인다.
  • 컴파일 시간에 타입결정: 템플릿을 사용하여 함수나 클래스를 정의하면, 이 함수나 클래스는 다양한 타입의 데이터를 다룰 수 있도록 유연하게 설계될 수 있다.

이렇게 템플릿은 타입에대해 강한 모습을 보인다. 여기서 타입이란 int, char, string, float, double과 같은 형태를 말한다.

템플릿의 종류는 보통 두가지가 있는데

 

  • 함수 템플릿: 여러 타입의 데이터를 다룰 수 있는 일반적인 함수를 정의한다.
  • 클래스 템플릿: 다양한 타입의 객체를 저장하거나 처리할 수 있는 일반적인 클래스를 정의한다.

예시를 보자면 

 

함수 템플릿:

#include <iostream>

using namespace std;
template <typename T>
T larger(T a, T b) {
    return (a > b) ? a : b;
}

int main() {

    cout << larger<int>(10, 20);
    
    return 0;

}

 

 

 

클래스 템플릿:

template <typename T>
class Array {
private:
    T* data;
    int size;
public:
    // ...
};

이렇게 사용된다.

 

템플릿을 사용할때에는 (함수명)or(클래스명) + <타입> + (매개변수) 순으로 작성하면된다.

함수 템플릿의 larger<int>(10,20) 가 그 예시이다.

 

템플릿은 활용 분야가 널다. 대표적으론 STL( Standard Template Library )에 사용되어 다양한 컨테이너 클래스를 제공한다. 여기서 STL은 vector, list, map 등의 컨테이너 클래스를 의미한다.

 

다음 시간에는 STL에 대해 더 알아보도록 하겠다.

'C++' 카테고리의 다른 글

문자관련 변수 및 사용 함수들(C++)  (0) 2025.01.06
STL(C++)  (1) 2024.12.31
소멸자 (C++)  (1) 2024.12.27
생성자 (C++)  (0) 2024.12.26
C++ - 클래스를 이용한 평균 값 구하기 및 버블정렬  (0) 2024.12.23