C++ 是否有';覆盖';C+中的说明符+;?

C++ 是否有';覆盖';C+中的说明符+;?,c++,c++11,inheritance,overriding,C++,C++11,Inheritance,Overriding,override关键字允许确保函数将被重写。 我正在寻找反向功能。因此,当我编写一个新函数时,我想用一些东西来标记它,以确保它不会被意外覆盖 (另外,我不想使其成为静态的,因为它看起来属于对象而不是类)如果不想在派生类中重写虚函数,可以使用: 指定不能在派生类中重写虚函数或不能从中继承类 e、 g 如果不希望在派生类中重写虚拟函数,可以使用: 指定不能在派生类中重写虚函数或不能从中继承类 e、 g 我想用一些东西来标记它,以确保它不会被意外覆盖 您可以使用。来自cppreference的示例:

override
关键字允许确保函数将被重写。 我正在寻找反向功能。因此,当我编写一个新函数时,我想用一些东西来标记它,以确保它不会被意外覆盖


(另外,我不想使其成为静态的,因为它看起来属于对象而不是类)

如果不想在派生类中重写虚函数,可以使用:

指定不能在派生类中重写虚函数或不能从中继承类

e、 g


如果不希望在派生类中重写虚拟函数,可以使用:

指定不能在派生类中重写虚函数或不能从中继承类

e、 g

我想用一些东西来标记它,以确保它不会被意外覆盖

您可以使用。来自cppreference的示例:

struct Base
{
    virtual void foo();
};

struct A : Base
{
    void foo() final; // A::foo is overridden and it is the final override
    void bar() final; // Error: non-virtual function cannot be overridden or be final
};
我想用一些东西来标记它,以确保它不会被意外覆盖

您可以使用。来自cppreference的示例:

struct Base
{
    virtual void foo();
};

struct A : Base
{
    void foo() final; // A::foo is overridden and it is the final override
    void bar() final; // Error: non-virtual function cannot be overridden or be final
};

final
是您要查找的关键字

备注:请注意,
override
并不像您所说的那样“确保函数将被重写”<在派生的类中,code>override确实确保您确实重写了基类的方法,而不仅仅是引入了一个类似于基类的虚拟方法的新方法

为了确保方法被重写,它在基类中必须是纯虚拟的


另外,
static
的工作方式正好相反:静态方法属于类,非静态方法需要调用对象。
final
是您要查找的关键字

备注:请注意,
override
并不像您所说的那样“确保函数将被重写”<在派生的类中,code>override确实确保您确实重写了基类的方法,而不仅仅是引入了一个类似于基类的虚拟方法的新方法

为了确保方法被重写,它在基类中必须是纯虚拟的



另外,
static
的工作方式正好相反:静态方法属于类,非静态方法需要调用对象。

什么,比如?您想要
final
?afaik
override
确保函数重写基类中的函数,而不是相反。。。如果我错了,请纠正我。。。。。。如果要确保函数被重写,必须将其抽象化(即纯虚拟)。如果不希望函数被重写,不要将其标记为
virtual
。例如,什么?您希望
final
?afaik
override
确保函数重写基类中的函数,而不是相反。。。如果我错了,请纠正我。。。。。。如果你想确保一个函数被重写,如果你不想重写一个函数,你必须将它抽象化(即纯虚拟),不要将其标记为虚拟的。我要确保我没有覆盖父类的任何内容。最终帮助仅适用于将从父类派生的类me@DraifKroneg:您可以将父类的方法标记为
final
。如果您无权访问父类的定义,则无法阻止重写。我要确保我没有重写父类的任何内容。Final仅对将从父类派生的类有帮助me@DraifKroneg:您可以将父类的方法标记为
final
。如果您无权访问父类的定义,则无法防止重写。如果继承树中有数百个父类,该怎么办?我只是想确保我没有意外地覆盖其中的任何内容。我不能把所有的考试都考完,然后把每一个都考成决赛。我只想添加一个小函数,如果它覆盖了任何内容,就会出现快速编译错误。总之:“overrides”关键字是我当前函数的本地关键字,而“final”则需要在数百个类中对我进行更改。这是不一样的-它做的事情与我所问的完全不同。如果我在继承树中有数百个父类呢?我只是想确保我没有意外地覆盖其中的任何内容。我不能把所有的考试都考完,然后把每一个都考成决赛。我只想添加一个小函数,如果它覆盖了任何内容,就会出现快速编译错误。总之:“overrides”关键字是我当前函数的本地关键字,而“final”则需要在数百个类中对我进行更改。这是不一样的-它正在做一件与我要求的完全不同的事情。