Возможно ли реализовать функцию переопределения в C ++ 03? - PullRequest
3 голосов
/ 16 октября 2019

В C++11 у нас есть override спецификатор, который позволяет проверить во время компиляции, что виртуальная функция фактически переопределяет поведение интерфейса в базовом классе.

Есть ли в любом случае такое же поведение в * 1005? * * * 1006

1 Ответ

3 голосов
/ 16 октября 2019

Чтобы проверить, существует ли функция foo в базовом классе, скажем, Foo, напишите

sizeof(&Foo::foo);

в версии дочернего класса foo. Идея состоит в том, что компиляция не удастся, если базовый класс Foo::foo отсутствует, и имеет благоприятный эффект, если он есть.

Конечно, это имеет недостатки - вы не можете описать их, например, по перегрузкам. Кроме того, static функции и переменные-члены с похожим именем также будут совпадать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...