나는 호 기적으로 반복되는 템플릿 패턴 에 대해 생각하고 있습니다.
나는 그것이 매우 유용하다는 것을 알았고 많은 작업에 대해 꽤 잘 조정되었습니다. 그러나 나는 야생에서 CRTP 코드를 많이 보지 못한다는 것을 인정해야합니다.
파악하기가 어렵습니까? 가상 기능이 전반적으로 쉬워 집니까? 가상 키워드가 나타나는 경우의 90 %에 사용해서는 안됩니까?
나는 호 기적으로 반복되는 템플릿 패턴 에 대해 생각하고 있습니다.
나는 그것이 매우 유용하다는 것을 알았고 많은 작업에 대해 꽤 잘 조정되었습니다. 그러나 나는 야생에서 CRTP 코드를 많이 보지 못한다는 것을 인정해야합니다.
파악하기가 어렵습니까? 가상 기능이 전반적으로 쉬워 집니까? 가상 키워드가 나타나는 경우의 90 %에 사용해서는 안됩니까?
답변:
간단한 사실은 대부분의 C ++ 사용자 vector
가 malloc
and 보다 나은 것을 거의 파악할 수 없기 free
때문에 고급 템플릿 메타 프로그래밍을 이해하고 구현할 수있는 사람은 그리 많지 않다는 것 입니다. 이것은 사람들이 90 %의 상황에 좋더라도 사람들이 그것을 알지 못하거나 사용 방법을 알기 때문에 훨씬 더 적게 볼 수 있음을 의미합니다.
그러나, 가상 함수는 않습니다 즉, 가상 함수가 CRTP보다 훨씬 사용하기 쉽게, 장점이있다. C ++ 템플릿은 사실상 무엇이든 모든 것에 대해 나쁜 것으로 유명하며 포함 모델은 공을 빨아들입니다.
그러나 그것들은 [가상 기능]이 더 느리고 덜 강력합니다. 예를 들어, 현재 CRTP를 사용하여 코드를 작성하고 있습니다. 여기에서 표현식 템플릿과 함께 사용할 연산자 오버로드를 상속합니다. 가상 함수가 그 기능을 수행 할 수있는 방법은 없습니다.
더 널리 사용되지 않는 이유는 다음과 같습니다.