Переопределение virtual методов



  • Всем привет.

    В вики, в статье о стиле кодирования http://qt-project.org/wiki/Qt_Coding_Style_Russian есть вот такая формулировка:
    «При переопредлении virtual-метода, ни за что не помещайте слово virtual в заголовочный файл.»
    или
    "When reimplementing a virtual method, do not put the virtual 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, кстати, переопределенный виртуальный метод сразу видно и без ключевых слов.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.