gpt4 book ai didi

c++ - 多重继承会调用哪个实例?

转载 作者:搜寻专家 更新时间:2023-10-30 23:56:49 25 4
gpt4 key购买 nike

我有 2 个基类(B1B2),它们派生自公共(public)基类 (B),它们有一个公共(public)变量 (let: int x; from base B), in 1st base x=0, in the 2nd base x=10 (默认值在 B1,B2 构造函数中给出) .

现在,如果我再派生一个类(类 D:虚拟公共(public) B1、虚拟公共(public) B2{})。

根据虚拟概念,这里只有一个 x 拷贝可用,现在如果我尝试使用 x 的派生类对象访问 x 我将获得 O/p(x=0x=10),为什么?

提前致谢。

最佳答案

这不是使用虚拟基类的正确位置(如果您不进一步派生)。也许您在混淆概念。

class A;
class B : virtual public A
class C : virtual public A
class D : public B, public C

在这种情况下,将基类设为虚拟化是有意义的,因为当您看透 D 时,有两条通往 A 类的路径。

你的情况是:-

class B1
{
public:
int x;
};

class B2
{
public :
int x;
};

class D : public B1, publicB2
{
public :
void accessBase ()
{
this->x; //error as ambigous.
this->B1::x; //fine it's B1's x.
this->B2::x; //fine it's B2's x.
}
};

关于c++ - 多重继承会调用哪个实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26885996/

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