Виртуальные функции против обратных вызовов

Рассмотрим сценарий, в котором есть два класса, т.е. базовый и производный. Если базовый класс хочет вызвать функцию производного класса, он может сделать это либо создав виртуальную функцию и определив эту VF в производном классе, либо используя обратные вызовы . Я хочу знать, что из двух следует предпочесть? Выбор из двух зависит от того, какие ситуации / условия?

РЕДАКТИРОВАТЬ: Уточнение вопроса:

Ситуация, о которой я говорил, заключается в том, что существует базовый класс, который получает сообщения. Эти разные сообщения должны обрабатываться производным классом по-разному, поэтому один из способов - создать виртуальную функцию и позволить производному классу реализовать ее, обрабатывая каждое сообщение в различных случаях переключения.

Другой способ - реализовать обратные вызовы через указатели функций (указывающие на функции производного класса) внутри шаблонов (шаблоны необходимы для обработки объекта производного класса и имен функций). Шаблоны и указатели на функции будут находиться в базовом классе.

5
задан Aquarius_Girl 13 April 2011 в 06:34
поделиться