如果我有代码:
struct Parent
{
virtual void fn();
};
struct Child : public Parent
{
virtual void fn() override final
{
Parent::fn();
}
};
只有通过Parent::fn
访问final
Child
而无需重新实施fn
,才能让class
成为fn
,以便其他一些Parent
可以覆盖从Child
派生而来的struct Child : public Parent
{
virtual void fn() override final = Parent::fn;
};
{{1}}来源{{1}}
像:
{{1}}
或其他一些语法?
答案 0 :(得分:10)
不,你不能重新实现它就可以做到。所以重新实现它:
struct Child : public Parent
{
virtual void fn() override final { Parent::fn(); }
};
N.B。说virtual ... override final
完全是多余的,final
是非虚函数的错误,所以你应该说:
void fn() final { Parent::fn(); }
请参阅http://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rh-override