这是一个 Python 和 C++ 问题。
我正在尝试多重继承,我遇到了这个例子。
B1 B2
\ /
D
假设我有两个(独立的?)父类B1, B2
和一个子类D
。我们只对 的对象感兴趣class 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 B1
但f2
可以毫无问题地调用self.f1()
。
我试图在 C++ 中复制这个确切的东西,但我无法让它工作,因为我不知道如何f1
从f2
.
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 代码?