0

这基本上是一个最佳实践问题,也是一个关于预期用途的问题override

struct A
{
    virtual void func();
};

struct B : public A
{
    virtual void func() override;
};

在上述情况下,使用override. 它告诉用户Bfunc覆盖了一个虚函数A(只能通过 C++11 之前的注释传达的信息)。但是当用户不应该认为这A是一个基类时怎么办......比如 ifAprivate继承的:

struct B : private A
{
    virtual void func() override;
};

在这种情况下,我告诉用户B他们不应该知道存在的内部实现细节。如果 的目的override是在作者B实际上没有覆盖任何内容的情况下给他一个错误,那很好;但是如果目的是向用户传达更多的信息,我是不是应该override这种情况?

4

1 回答 1

2

“覆盖”就在那里,所以一个类的实现者可以说“这个方法应该覆盖我的基类中的一个”。如果他这样做了,那么如果该方法实际上没有覆盖基类方法,那么编译器将提供一个错误——如果您输入错误的名称,或者基类稍后发生更改,就会发生这种情况。

编辑:因此,它是一个有助于编写正确代码的工具;它并不意味着是某种文档关键字。

于 2012-07-08T20:20:38.937 回答