在C++中声明一个类"final : public virtual"有用吗?



将 c++ 类声明为 final,是否需要使用虚拟继承继承基类?我知道虚拟继承的用途,并使用它来避免成员重复。

例如,如果我有这些类定义(假设它们都有一些成员和虚拟解构函数(

class B : public virtual A {};
class C : public virtual A {};
class D : public virtual C {};

将下一个类定义为

class E final : public virtual D {}

class F final : public virtual B, public virtual C {};

或者是默认继承,即

class E final : public D {}
class F final : public B, public C {};

总是够吗?

这已经困扰了我很长时间了,正如我不时看到的代码,其中包括

"final : public virtual"

无论如何,这里可以安全地省略virtual吗?

任何提示/解释都非常感谢

struct A { void foo() { cout << "foo" << endl; } };
struct B : virtual A {};
struct D final : virtual A, B {};
D d;
d.foo();

如果没有virtual A呼吁foo将是模棱两可的。

最新更新