반응형

template class는 아시는 걸로 알고 설명하겠습니다.

template은 사용자가 만든 클래스가 다양한 타입에 대하여 동작하도록 하기 위해서

만든 겁니다.

이는 특히 표준 라이브러리 구현에 있어서 소스코드의 양을 줄이고

사용자에게 다양한 데이터 타입을 지원해주기 위해서 만들어진 개념이죠.

하지만... 몇몇 사람들은 template이 오히려 C++를 어렵고 복잡하게 만들었다는 사람들도

있습니다. (저도 그 중에 하나입니다만...)

template은 클래스에만 작용되는 것이 아니라 함수에도 적용될 수 있습니다.

template을 사용하여 만든 함수를 template function이라고 합니다.

아래 소스는 그 사용 예입니다.

클래서 product는 전형적인 template class이고

add_value함수는 전형적인 template function입니다.

소스를 잘 분석해보면 이해가 template function이 뭔지 이해가 가실 겁니다.


================== template class && template function ====================

#include <iostream>

using namespace std;

template <typename T>
class product {
 T data;
public:
 product(void) {}
 product(const T d) { data=d; }
 product(const product& p) { data=p.data;}
 product operator + (const product& d) const { return product(data*d.data); }
 friend ostream& operator << (ostream& os,const product& p) { return os << p.data; }
};


template <typename C>
C add_value(const C a,const C b) { return a+b; }


int main(void)
{
 product a(3),b(4);
 cout << add_value(3,4) << endl;
 cout << add_value(a,b) << endl;

 return 0;
}


======================== 출력 결과 =======================

7

12


반응형

'C & C++ 관련' 카테고리의 다른 글

template함수  (0) 2007.03.14
fseek, ftell, istream, ostream  (0) 2007.03.14
using std에 대해 궁금합니다.  (0) 2007.03.14
Posted by Real_G