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