tgoop.com/seniorcpp/2510
Last Update:
Curiously Recurring Template Pattern (CRTP)
CRTP предполагает использование шаблонов и наследования для достижения формы статического полиморфизма. Он позволяет производному классу наследоваться от базового, который параметризуется самим производным классом в качестве аргумента шаблона.
В данном примере класс Base
является шаблонным классом, который принимает производный класс (Derived1
или Derived2
) в качестве аргумента шаблона. Класс Base
предоставляет общую функциональность или интерфейс, который может быть настроен каждым производным классом.
Функция implementation()
в базовом классе определяется как невиртуальная. Внутри функции implementation()
используется static_cast<Derived*>(this)
для приведения указателя к типу производного класса. Это позволяет каждому производному классу предоставлять свою собственную реализацию функции implementation()
.
Когда функция implementation()
вызывается на экземпляре производного класса, она вызывает соответствующую реализацию в этом производном классе.
BY Senior C++ Developer

Share with your friend now:
tgoop.com/seniorcpp/2510