본문 바로가기

template10

[ C++ ] 스마트 포인터의 템플릿화 #ifndef __SMART_POINTER_TEMPLATE_H_ #define __SMART_POINTER_TEMPLATE_H_ #include #include using namespace std; template class Smart_Pointer { private: T * ptr; public: Smart_Pointer(T* _ptr); T& operator*() const; T operator->() const; ~Smart_Pointer(); }; template Smart_Pointer::Smart_Pointer(T* _ptr) : ptr(_ptr) { } template T& Smart_Pointer::operator*() const { return *ptr; } template T Smart.. 2019. 11. 30.
[ C++ ] 배열 클래스의 템플릿화 #ifndef __ARRAY_TEMPLATE_H_ #define __ARRAY_TEMPLATE_H_ #include #include using namespace std; template class Bound_Chk_Array { private: T * arr; int len; Bound_Chk_Array(const Bound_Chk_Array& arr) { } Bound_Chk_Array& operator=(const Bound_Chk_Array& arr) { } public: Bound_Chk_Array(int _len); T& operator[] (int idx); T operator[] (int idx) const; int GetArrLen() const; ~Bound_Chk_Array(); }; .. 2019. 11. 30.
[ C++ ] 클래스 템플릿 ( Class Template ) 앞서 포스팅에 함수 템플릿을 설명하였다. 클래스 템플릿( Class Template )은 함수 템플릿처럼 클래스를 만들어 내는 도구이다. 그럼 점에 대한 클래스 템플릿을 만들어보자. 컴파일러는 24행의 Dot dot1(1, 2); 를 보고 Dot 템플릿 클래스를 생성하고, 25행의 Dot dot2(1.5, 2.5); 를 보고 Dot 템플릿 클래스를 생성한다. * 여기서 주의해야 할 점은, 템플릿 클래스는 템플릿 함수와 다르게 객체를 생성할 때 , 과 같은 자료형 정보가 반드시 표기되어야한다. 클래스 템플릿도 멤버함수를 클래스 외부에 정의하는 것이 가능하다. 위의 코드를 조금 수정해보겠다. 점의 x, y 좌표 값을 더하는 Adder 함수를 추가하였다. 멤버함수를 클래스 외부에 정의할 때도 template를.. 2019. 11. 30.
[ C++ ] 함수 템플릿의 특수화(Specialization) 함수 템플릿의 특수화(Specialization)는 특정 자료형에 대해서만 다른 템플릿 함수를 생성할 수 있도록 커스텀해주는 것이다. 지난 템플릿 포스팅에 사용하였던 Adder 함수 템플릿을 기반으로 예제를 보겠다. template const char * Adder(const char * chr1, const char * chr2) { cout 2019. 11. 29.