最佳实践虚拟

Best Practices Virtual

本文关键字:虚拟 最佳      更新时间:2023-10-16
最佳做法

是将 virtual 关键字放在派生类的头文件中吗?

下面是一个示例:

class A
{
public:
    virtual void Func();
};

你会把B类推导成这样吗:

class B : public A
{
public:
    virtual void Func();
};

或者这个:

class B : public A
{
public:
    void Func();
};
最佳做法

是使用 C++11 中的替代说明符:http://en.cppreference.com/w/cpp/language/override(也在早期版本的 Visual C++ 中作为Microsoft扩展)。

如果覆盖存在,则虚拟是冗余的,如上面的链接示例所示。

是的,显式通常被认为是最佳实践。该语言确实指定如果函数可以覆盖,则隐式添加virtual说明符,但这是"偷偷摸摸的"。

C++11 还添加了 overridefinal 限定符,因此您可以确保扩展基础,而不是定义全新的函数。

这些限定符需要一个虚函数。它们并不意味着virtual但隐含的virtual必须存在。但同样,明确性是最好的策略。

一般来说,最好尽可能明确。 如果要重写派生类中的函数,则应指定它。 如果您不打算再次覆盖该函数,请将其设为最终函数。 声明是你与类用户的协定。 如果你把它说清楚(但仍然简洁),它就不太可能被错误地使用。