Описание тега non-virtual-interface
Шаблон невиртуального интерфейса - это использование абстрактного базового класса с общедоступными невиртуальными функциями, которые делегируют (чистым) виртуальным функциям, которые могут быть переопределены производными классами.
Преимущества в том, что базовый класс находится под полным контролем. Он может добавить проверку предварительного и постусловия, или разделить обработку на большее количество шагов, или провести рефакторинг, или реализовать более полное разделение интерфейса и реализации с использованием идиомы Pimpl. Не виртуальный интерфейс действует аналогично шаблону шаблонного метода.