Что такое странно повторяющийся шаблон шаблона?

Любопытно повторяющийся шаблон шаблона (CRTP) возникает, когда у дочернего класса есть родительский класс, который является специализацией шаблона для этого класса.

На основе параметра, который является передается во время вызова функции, компилятор определяет, какая функция будет вызвана — это называется полиморфизмом времени компиляции . CRTP в основном используется для реализации полиморфизма во время компиляции.

Синтаксис

Вот как выглядит CRTP:

Синтаксис в C ++

Реализация

Следующий код использует CRTP для реализации полиморфизма времени компиляции :

  #include  using namespace std;//Обратите внимание, что во время компиляции//полиморфизм не требуется никаких виртуальных функций. шаблон //Это родительский класс.  Требуется шаблонный параметрclass Citrus {public: void description () {static_cast  (this) -> description ();  }};//Это дочерний класс.  Подпись CRTP: Дочерний класс передается//как параметр шаблона родительскому классу. Class Clementine: public Citrus  {public: void description () {cout  {public: void description () {cout  void fruit_description (Citrus  citrus) {citrus.description ();} int main () {Clementine clementine;  Лайм-лайм;  fruit_description (клементин);  fruit_description (лайм);  return 0;} 

Оцените статью
nanomode.ru
Добавить комментарий