gpt4 book ai didi

c++ - python 与 c++ 中的多重继承

转载 作者:行者123 更新时间:2023-11-30 04:16:29 25 4
gpt4 key购买 nike

这是一个 Python 和 C++ 问题。

我正在试验多重继承,我遇到了这个例子。

B1 B2
\ /
D

假设我有两个(独立的?)父类 B1、B2 和一个子类 D。我们只对 D 类 的对象感兴趣。

class B1:
def f1(self):
print "In f1"

class B2:
def f2(self):
self.f1()

class D (B1, B2):
def fD(self):
self.f2()

d = D()
d.fD()

Output: In f1

有趣的是(至少对我而言)class B2 不知道 class B1f2 可以调用 self.f1() 没有问题。

我试图在 C++ 中复制这个确切的东西,但我无法让它工作,因为我不知道如何从 f2 调用 f1

class B1 {
public:
virtual ~B1() {}
virtual void f1() { cout << "In f1" << endl; }
};

class B2 {
public:
virtual ~B2() {}
virtual void f2() { /* What goes here?? */ }
};

class D : public B1, public B2 {
public:
void fD() { f2(); }
};

那么,我想知道 Python 如何/为什么可以处理这个问题而 C++ 不能?

此外,我们可以对 C++ 代码做哪些最小的更改,使其表现得像 Python 代码?

最佳答案

what minimal changes can we make to the C++ code to make it behave like the Python code?

简答:你不能。 B2 不知道它会形成一个子类的一部分,该子类也有 B1 作为父类(super class)。

长答案:如果您使用一些粗鲁的向下转换(本质上是将 this 转换为 D*),您可以。但这可能不是一个好主意,因为 *this 不一定是 D

关于c++ - python 与 c++ 中的多重继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17769188/

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