Как уже указывал PeterT, это curiously recurring template pattern (CRTP). Это способ реализации статического полиморфизма в C++, поскольку базовый класс A
имеет знания о подклассе B
и его (внутренних) типах и состояниях.
Например, логика в A
может возвращать объекты правильного типа, которые не были бы возможны при динамическом полиморфизме. CRTP позволяет переместить эту логику в базовый класс, где для динамического полиморфизма потребуются виртуальные функции в производном классе для работы с правильным типом, соответствующим B
.
Дается более подробное объяснение here.
Ваш вопрос кажется неверным – Massa
Вы спрашиваете, что такое [CRTP] (http://en.wikipedia.org/wiki/Curiously_recurring_template_pattern)? – PeterT
Я не знаю, что такое CRTP, и почему мы используем этот шаблон для объявления класса? Благодаря! – Lei