KirillHelm
@KirillHelm

Что делает «Q_DECL_OVERRIDE» в Qt?

Разбераюсь с Qt, тут по частям пересматривал простенький проэкт и напоролся на странное объявление функций:
К примеру:
void advance(int step) Q_DECL_OVERRIDE;
или:
QRectF boundingRect() const Q_DECL_OVERRIDE;

Я посмотрел на сайте Qt, зачем нужен этот макрос, как я понял, для генирации ошибок не переопределённых виртуальных функций.

Но тут функции совсем не виртуальные. Объясните кто знает что за макрос "Q_DECL_OVERRIDE" и зачем он нужен?
  • Вопрос задан
  • 2029 просмотров
Пригласить эксперта
Ответы на вопрос 1
vt4a2h
@vt4a2h Куратор тега C++
Senior software engineer (C++/Qt/boost)
Этот макрос раскрывается как override, если есть поддержка C++11 и как пустое место в противном случае. Что собственно и написано на сайте: "It expands to "override" if your compiler supports that C++11 contextual keyword, or to nothing otherwise".
Что означает ключевое слово override можно легко нагуглить: en.cppreference.com/w/cpp/language/override.
Для виртуальных функций отличная практика писать слово virtual только один раз -- в интерфейсе обычно, от этого они виртуальными быть не перестанут. В остальных случаях override.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы