Страницы

Поиск по вопросам

четверг, 13 февраля 2020 г.

Полиморфизм и указатели на функции

#cpp #c #ооп


Можно ли считать указатели на функции одним из способов реализации статического полиморфизма?
    


Ответы

Ответ 1



Нет, это динамический полиморфизм. Оно же в рантайме диспатчится, а не во время компиляции.

Ответ 2



Да, это статический полиморфизм. Оно же может во время компиляции диспатчится, а не в рантайме. template struct repeat { private: int const m_remaining_iterations_count{}; public: constexpr repeat(int const remaining_iterations_count) : m_remaining_iterations_count{remaining_iterations_count} { return; } public: constexpr auto operator ()(int value) const { auto remaining_iterations_count{m_remaining_iterations_count}; while(0 < remaining_iterations_count) { --remaining_iterations_count; value = (*p_action)(value); } return value; } }; constexpr auto increment(int const value) { return value + 1; } constexpr auto decrement(int const value) { return value - 1; } static_assert(25 == repeat<&increment>(5)(20)); static_assert(12 == repeat<&decrement>(8)(20));

Комментариев нет:

Отправить комментарий