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
반응형
'Archive > Develop' 카테고리의 다른 글
[ Python ] 파이썬 데이터 분석 | 유동인구 그래프를 그려보자! (0) | 2021.06.20 |
---|---|
[ Python ] Pandas와 matplotlib에 대해 알아보자! | 데이터 시각화 예시 (0) | 2021.06.13 |
[ C# ] C# 을 혼자서 익혀보자! (C# 독학 도전기) | C# 강의 링크 모음 (0) | 2021.05.27 |
[ C++ ] 가상함수와 추상클래스 (0) | 2021.05.26 |
[ C++ ] 상속의 개념 | 상속 예제 (0) | 2021.05.18 |