#cpp
Что такое curiously recurring template pattern (CRTP)? Когда его использовать?
Ответы
Ответ 1
Curiously Recurring Template Pattern (CRTP) (примерный перевод: Странно рекурсивный шаблон проектирования или Странно повторяющийся паттерн) — идиома языка C++, состоящая в том, что некоторый класс X наследуется от шаблона класса, использующего X как шаблонный параметр. Пример: // The Curiously Recurring Template Pattern (CRTP) templateclass Base { // methods within Base can use template to access members of Derived }; class Derived : public Base { // ... }; Используется для статического полиморфизма: template struct Base { void interface() { // ... static_cast (this)->implementation(); // ... } static void static_func() { // ... T::static_sub_func(); // ... } }; struct Derived : Base { void implementation(); static void static_sub_func(); }; Источник: https://ru.wikipedia.org/wiki/Curiously_recurring_template_pattern Ответ 2
Что же из себя представляет CRTP? CRTP можно описать буквально в одном предложении: CRTP моделирует ситуацию при которой класс-наследник наследует класс-родитель параметризированный классом-наследником.
Комментариев нет:
Отправить комментарий