为什么要将 final 添加到 final class 的成员函数中?

Why adding final to a member function of a final class?

考虑以下代码:

#include <iostream>

class B {
   virtual void f() {
      std::cout << "Base" << '\n';
   }
};

class D final: public Base {
   void f() final override {
      std::cout << "Derived" << '\n';
   }
};

注意上面 final 上下文关键字的两种用法——自 C++11 起可用——我们可以观察到以下内容:

因此,成员函数 f() 不可能被派生自 D 的 class 覆盖,因为这样的派生 class 不可能存在由于 final 应用于 class D.

使用 final 作为声明为 final 的 class 成员函数的 virtual 的覆盖控制是否有任何意义?还是只是多余的?

finalfinal 派生的 class 中的 virtual 函数是多余的。

就像在标记为 override 的方法上说 virtual 一样是多余的。 C++ 有时就是这样。