본문 바로가기

template10

[ C++ ] template<typename T>과 template<> 언제 template를 선언해야하고 언제 template을 선언해야 할까? 템플릿을 정의할 때는 template 또는 template와 같은 선언을 둬서 템플릿의 일부 또는 전부를 정의하고 있다는 사실을 컴파일러에게 알려야 한다. 그럼 template의 선언이 필요한 경우롸 template의 선언이 필요한 경우를 구분하면 된다. 초반에 템플릿을 공부할 때는 많이 헷갈렸는데 결론은 간단하다. 정의 부분에 T가 존재하면 를 선언하고 T, T1, T2와 같은 문자가 존재하지 않으면 를 선언하면 된다. template class Temp { private: T num; }; //--------------------- template class Temp { private: int num; }; 주의할 점은 부분 .. 2019. 12. 1.
[ C++ ] 함수 템플릿, 클래스 템플릿과 static template void StaticValue() { static T num = 0; num += 1; cout 2019. 12. 1.
[ 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.