728x90
반응형
제네릭 또는 일반화
: 함수나 클래스를 일반화시키고,
매개변수타입을 지정하여 틀에서 찍어 내듯이 함수나 클래스 코드를 생산하는 기법
템플릿
: 함수나 클래스를 일반화하는 C++ 도구
: template 키워드로 함수나 클래스 선언
-> 변수나 매개 변수의 타입만 다르고, 코드 부분이 동일한 함수를 일반화시킨다.
제네릭 타입 : 일반화를 위한 데이터 타입
템플릿 선언 양식
template <class T>
또는
template <typename T>
3개의 제네릭 타입을 가진 템플릿 선언
template <class T1, class T2, class T3>
템플릿 사용예시
#include <iostream>
using namespace std;
template <class T>
void myswap(T& a, T& b) {
T tmp;
tmp = a;
a = b;
b = tmp;
}
int main() {
int a = 4, b = 6;
myswap(a, b);
cout << "a = " << a << ", b = " << b << endl;
return 0;
}
void myswap(T& a, T& b) {
T tmp;
tmp = a;
a = b;
b = tmp;
}
class Circle {
int radius;
public:
Circle(int radius = 1) { this->radius = radius; }
int getRadius() { return radius; }
};
int main() {
//int a = 4, b = 6;
//myswap(a, b);
//cout << "a = " << a << ", b = " << b << endl;
Circle donut(5), pizza(20);
myswap(donut, pizza);
cout << "donut반지름 = " << donut.getRadius() << ", ";
cout << "pizza반지름 = " << pizza.getRadius() << endl;
return 0;
}
객체또한 품을 수 있다.
템플릿의 장점
함수 코드를 재사용한다는 점에서 소프트웨어의 생산성과 유용성이 유리하다.
728x90
반응형
'Programming > C++' 카테고리의 다른 글
[ C/C++ ] Window Thread 프로그래밍 (0) | 2021.10.29 |
---|---|
[ Windows Socket ] 소켓 프로그래밍/소켓 통신 예제 간단한 채팅 프로그램 (4) | 2021.09.17 |
[ C++ ] 가상함수와 추상클래스 (0) | 2021.05.26 |
[ C++ ] 상속의 개념 | 상속 예제 (0) | 2021.05.18 |
[ C++ ] 프렌드함수 || 연산자 중복 || 프렌드함수 예제, 연산자 중복 예제 (0) | 2021.05.11 |