C++에서 템플릿(Template)은 함수나 클래스를 일반화하여 다양한 데이터 타입을 처리할 수 있도록 하는 기능입니다. 이를 통해 중복된 코드를 줄이고 코드의 재사용성을 극대화할 수 있습니다. 함수 템플릿과 클래스 템플릿은 템플릿의 대표적인 두 가지 형태입니다.
1. 템플릿의 필요성
같은 논리를 여러 타입에 대해 반복할 때 유용
일반적으로, 같은 기능을 다른 데이터 타입에 대해 사용하려면 중복된 코드를 작성해야 합니다.
#include <iostream>
using namespace std;
// 정수를 더하는 함수
int addInt(int a, int b) {
return a + b;
}
// 실수를 더하는 함수
double addDouble(double a, double b) {
return a + b;
}
int main() {
cout << "Int: " << addInt(3, 5) << endl;
cout << "Double: " << addDouble(2.5, 4.3) << endl;
return 0;
}
템플릿을 사용하면 타입에 상관없이 동작하는 하나의 함수로 모든 타입을 처리할 수 있습니다.
#include <iostream>
using namespace std;
// 함수 템플릿
template <typename T>
T add(T a, T b) {
return a + b;
}
int main() {
cout << "Int: " << add(3, 5) << endl; // 정수 더하기
cout << "Double: " << add(2.5, 4.3) << endl; // 실수 더하기
return 0;
}
단, typename 대신 class를 사용해도 동일하게 동작합니다.
클래스 템플릿은 다양한 데이터 타입을 처리할 수 있는 일반화된 클래스를 정의합니다. 이는 스택, 리스트와 같은 자료구조에서 주로 사용됩니다.
template <typename T>
class Box {
private:
T value;
public:
// 생성자
Box(T v) : value(v) {}
// 값 출력 메소드
void display() {
cout << "Value: " << value << endl;
}
// 값 반환 메소드
T getValue() {
return value;
}
};
// int형 값을 저장하는 Box 객체
Box<int> intBox(100);
intBox.display(); // 출력: Value: 100
// double형 값을 저장하는 Box 객체
Box<double> doubleBox(99.99);
doubleBox.display(); // 출력: Value: 99.99
// string형 값을 저장하는 Box 객체
Box<string> stringBox("Hello, Templates!");
stringBox.display(); // 출력: Value: Hello, Templates!
위와 같이 Box 클래스는 템플릿으로 정의되어 다양한 데이터 타입을 받고 클래스를 인스턴스화(Box<int>와같은) 를 할때 데이터타입을 지정하여 타입과 상관없이 동일한 로직이 사용가능합니다.
'언리얼(Unreal) > 엔진' 카테고리의 다른 글
24.12.08 언리얼( STL의 기본 개념과 사용법) (0) | 2024.12.08 |
---|---|
24.12.07 언리얼(스마트 포인터에 대하여) (0) | 2024.12.07 |
24.12.06 언리얼( Cpp의 상속의 개념) (0) | 2024.12.06 |
24.12.06 언리얼(Cpp 멤버변수,메소드 등) 사용법 (0) | 2024.12.06 |
24.12.06 언리얼(포인터에 대하여) (0) | 2024.12.06 |