본문 바로가기

C++74

[ C++ ] 템플릿 매개변수와 디폴트 값(default value) 템플릿을 정의할 때 결정되지 않은 자료형을 T, T1, T2와 같은 문자로 표기하는데 이런 문자를 템플릿 매개변수라고 한다. 그래서 다음과 같은 형태로 객체 생성이 가능하다. 또한 디폴트 값도 지정이 가능합니다. 자료형도 디폴트 값을 정해줄 수 있다. 2019. 12. 1.
[ C++ ] 클래스 템플릿의 특수화( Class Template Specialization ) 이전에 함수 템플릿의 특수화에 대해 포스팅을 한 적이 있다. 함수 템플릿을 특수화하는 이유는 특정 자료형에 대해서는 개발자가 커스텀한 다른 템플릿 함수를 생성하기 위해서이다. 이처럼 클래스 템플릿을 특수화하는 이유는 특정 자료형에 대해서는 다르게 구분이 되는, 템플릿 클래스의 객체를 생성하기 위해서이다. 예제를 보자. Hello 클래스 템플릿을 double형에 대해서 특수화하였다. 그래서 double형으로 Hello 객체를 생성 시에 특수화한 부분을 기반으로 객체가 생성된 것을 확인할 수 있다. 그럼 Hello 클래스에 typename을 하나 더 뒀다고 생각해보자. template class Hello { ... } 그럼 이에 대하여 char형으로 특수화를 시키면 다음과 같이 될 것이다. template.. 2019. 12. 1.
[ 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.