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

C++ 为什么要将final添加到final类的成员函数中?,c++,c++11,inheritance,final,virtual-functions,C++,C++11,Inheritance,Final,Virtual Functions,考虑以下代码: #include <iostream> class B { virtual void f() { std::cout << "Base" << '\n'; } }; class D final: public Base { void f() final override { std::cout << "Derived" << '\n'; } }; #包括 B类{ 虚空

考虑以下代码:

#include <iostream>

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

class D final: public Base {
   void f() final override {
      std::cout << "Derived" << '\n';
   }
};
#包括
B类{
虚空f(){

派生类中的
virtual
函数上的std::cout
final
是冗余的


<>就像上面的代码“代码>虚拟代码/代码>标记为<代码>覆盖> /CODE是多余的。C++只是有时。

它是冗余的,但是这也可以看到,例如当做私有继承时,所有成员都被私有化;你仍然有一些私有关键字,但是私有继承超常。des all.查看“将final添加到类D中会阻止它进一步派生。”=>“防止它(f)在从D派生的类中被重写”。因此,毫无疑问,它是冗余的。在这种情况下,在我看来这是冗余的。使用
override
final
也是冗余的(如果我没有错的话)。“因为final已经意味着成员函数必须是虚拟的?”-完全正确。