Important: Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct
Переопределение virtual методов
-
Всем привет.
В вики, в статье о стиле кодирования http://qt-project.org/wiki/Qt_Coding_Style_Russian есть вот такая формулировка:
«При переопредлении virtual-метода, ни за что не помещайте словоvirtual
в заголовочный файл.»
или
"When reimplementing a virtual method, do not put thevirtual
keyword in the header file.
On Qt5, annotate them with the Q_DECL_OVERRIDE [qt-project.org] macro after the function declaration, just before the ‘;’ (or the ‘{’ )."
Кто-нибудь может пояснить, почему так? Или рассказать где почитать подробнее.Заранее спасибо.
-
Насколько я помню (читал когда-то), то это сделано чтобы сразу было видно, объявляется ли функция как виртуальная первый раз в этом классе, или только переопределяется.
[code]class A : public SomeOther
{
protected:
virtual void f();
};[/code]
Тут не ясно, переопределяем мы метод, или он объявлен в данном классе впервые.
[code]class A : public SomeOther
{
protected:
void f() Q_DECL_OVERRIDE;
};[/code]
А вот тут все сразу понятно.
Благодаря подсветке в QtCreator, кстати, переопределенный виртуальный метод сразу видно и без ключевых слов.