标记被覆盖的功能

问题描述 投票:7回答:2

是否存在命令,如\deprecated,但是为了标记被覆盖的函数?

对于已覆盖的函数,Java有一个注释@override。我想在C ++中做同样的事情,这样我就能看到我覆盖的超类函数。最好的情况是,文档页面还应显示所有类成员函数,这些函数是继承的,但未使用超类函数的超链接显式覆盖。

我知道有一种方法可以从超类方法中复制文档。但我不想复制整个文档。我只是想知道,一个函数是继承的。该行为应与已弃用的选项类似,以使用条形标记这些旧函数。

c++ override doxygen
2个回答
8
投票

每个重写的函数都会自动获得重新实现的通知。例如,派生类中的重写函数会收到通知“从MyBaseClass重新实现”。

它还在基类的文档中发布通知。提到“在测试中重新实现”

要显示所有函数,包括继承函数,可以将INLINE_INHERITED_MEMB设置为YES。然后Doxygen将每个继承但未被覆盖的函数的文档复制到派生类的文档中。

例如,使用此源时:

class TestBase
{
    public:
        /**
         * Base class function.
         */
        virtual void function();

      /**
       * Another function.
       */
      virtual void another();
};

class Test: public TestBase
{        
    public:
        /**
         * Overridden function.
         */
        virtual void function();
};

INLINE_INHERITED_MEMB设置为YES将导致Derived类的以下文档:(使用Doxygen 1.7.6)

会员职能文件

virtual void TestBase::another ( ) [virtual, inherited] 另一个功能。

virtual void Test::function ( ) [virtual] 派生。 从TestBase重新实现。

我想这就是你要找的东西。


0
投票

从C ++ 11开始,您可以使用override说明符:

class A {
    virtual void jump() = 0;
    void talk() {}
};

class B: public A {
    void jump() const override {...} // Error: B:: jump does Not overrides A:: jump (A::Jump is not const...)
    void jump() override {...} // OK: B:: jump overrides A:: jump
    void talk() override {...} // Error: A::talk is not virtual
};

原始示例和官方文档:http://en.cppreference.com/w/cpp/language/override

© www.soinside.com 2019 - 2024. All rights reserved.