의미를 풀이하면 ‘이상한 재귀 템플릿 패턴’
런타임 성능 저하를 만들지 않기 위해서 virtual
을 쓰지 않고 다형성을 구현한다.
virutal
을 쓰면 런타임에 실제 객체의 type 정보를 알아내 함수 호출을 가능하게 해 다형성을 구현할 수 있다. 그런데 이는 런타임에 동작하다보니 컴파일 타임보다 속도는 느리게 동작할 수 밖에 없다.
간단히 상속으로 구현하면 편한데 이렇게 하는 이유는 단연 성능에 있는데, 그렇다면 성능을 비교해보자!
속도 비교 결과: CRTP > 가상 함수 사용 >>>> dynamic_cast