以下代码将从类 B 调用函数 F,但有人可以向我解释为什么会这样。是否有可能 B 类的方法重载了 V 类的方法(因为 B 是从 V 继承的)?提前致谢。
#include <iostream>
using namespace std;
class V{
public:
void f(){ x+=2; cout << "V:"<< x;};
int x;
};
class B: public virtual V{
public:
void f(){ x+=3; cout << "B:"<< x;};
int x;
};
class D: public B, virtual public V{
public:
void g(){ x++; f(); }
};
void main(){
D ins;
ins.x = 1;
ins.g();
}
最佳答案
B::f()
隐藏方法V::f()
,这被称为函数隐藏。
好读:
What's the meaning of, Warning: Derived::f(char) hides Base::f(double)?
关于c++ - C++中的类继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14808815/