gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:06:55 28 4
gpt4 key购买 nike

当声明一个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();

A 调用 foo 之前如果没有 virtual 将是不明确的。

关于c++ - 在 C++ 中将一个类声明为 "final : public virtual"有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48423743/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com