파트 2에선 함수 템플릿을 알아 봤다면, 이제 클래스 템플릿을 알아보자, 클래스 템플릿은 메타 프로그래밍에서 본다면 특별한 녀석이니, 꼭 짚고 넘어가야 한다.(여기서 왜 특별한지는 이야기 하지 않는다 : ) )

클래스 템플릿( class template )라 해도 일반 클래스와 다를게 없다. 클래스 템플릿을 만들기 전에 우선 일반 클래스로 만들어서 테스트를 해 보고, 템플릿 화를 시키는게 더 편하기까지 하니, 정말 차이가 없다는 것을 알 것이다.

클래스 템플릿 정의하기

보면 알겠지만, 함수 템플릿과 크게 다르지 않다는 것을 볼 수 있다 시작은 template <class T> 다음부터 적용 되며, 끝은 } 여기서 된다.

, 4라인 시작 되어, 18까지 템플릿 매개변수 T 적용 된다는 것이다.

22 라인에서 볼 수 있듯이 각괄호 안에 매개변수인 타입을 넘기면, 클래스 템플릿으로써 사용 될 수 있다. 여기서 템플릿 매개변수는 템플릿 외부에 정의된 타입의 이름이라기보다는 그냥 매개변수로 인식해야 한다.

그리고 클래스 템플릿 내부에서 클래스 자신을 명시하고자 할 때, 굳이 템플릿까지 써줄 필요가 없다. 알아서 되기 때문이다. 그 예는 7 라인과 8 라인에서 확인 할 수 있다.

한가지 알아야 할 것은 클래스 템플릿의 "이름"은 오버로딩(클래스는 원래 안된다.)이 되지 않기 때문에, 해당 타입일 때 다른 클래스로 만들고자 할 때에는 템플릿 특수화를 거쳐야 한다는 것을 알아야 한다.


총평

내가 정리해도 두서가 없는게 느껴진다. 책 쓰는 사람들이 존경스러움을 다시 한번 느끼게 해주는 부분이다. 이야기의 진행 방식을 미리 정해두고 써야 겠다는 생각이 든다.


  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 라이프코리아트위터 공유하기
  • shared
  • 카카오스토리 공유하기