Страницы

Поиск по вопросам

воскресенье, 1 декабря 2019 г.

Что такое CRTP?

#cpp


Что такое curiously recurring template pattern (CRTP)? Когда его использовать?
    


Ответы

Ответ 1



Curiously Recurring Template Pattern (CRTP) (примерный перевод: Странно рекурсивный шаблон проектирования или Странно повторяющийся паттерн) — идиома языка C++, состоящая в том, что некоторый класс X наследуется от шаблона класса, использующего X как шаблонный параметр. Пример: // The Curiously Recurring Template Pattern (CRTP) template class 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 моделирует ситуацию при которой класс-наследник наследует класс-родитель параметризированный классом-наследником.

Комментариев нет:

Отправить комментарий