템플릿 메타 프로그래밍

 

일반 함수를 써서 재귀호출을 해야하는 문제를, 템플릿 클래스를 이용하면 똑같이 구현할 수 있다.

▶ 템플릿의 원래 기능이 아니라, 템플릿을 이용해서 문제를 푸는 방법

 

cf. 재귀 호출 방식으로 템플릿을 계속 생성하는 것은, 잘 알려진 대표 템플릿 메타 프로그래밍의 예

 

 

 

 

 

템플릿 메서드 패턴

 

부모 클래스에서 virtual이 아닌 함수 내부에서, 자식의 virtual 함수를 호출한다

 

자식의 virtual 함수를 호출 : 객체 생성 타입에 따라 적절한 오버라이딩 호출

 

 

 

 

 

템플릿 트릭

 

템플릿 트릭 중 하나가

 

템플릿 메소드 패턴을 사용하면 virtual 함수를 런타임 때 테이블로 접근해서 호출하는데

 

이러한 테이블을 접근하는 시간을 단축하기 위해 해결하는 static polymorphism 방법임 ( 템플릿 04 강의 )

 

 

 

 

 

 

템플릿 메서드 패턴의 템플릿은 C++템플릿이 아니다.. 그냥 "" 이라는 의미다.

c++템플릿의 기능을 사용하는 것이 아니라, 적절한 오버라이딩을 호출하도록 하는 거니까...ㅎㅎ

 

 

 

 

 

 

 

'Language > C++' 카테고리의 다른 글

[C++] 중첩 클래스 사용 이유  (0) 2018.01.10
[C++] variadic template  (0) 2017.12.28
[C++] 메세지 패싱  (0) 2015.09.17
[C++] 싱글톤에 대한 정리  (0) 2015.09.02
[C++] 함수로 주소값 전달하는 방법  (0) 2015.08.25