C++ C+中的类继承+;

C++ C+中的类继承+;,c++,class,inheritance,overloading,C++,Class,Inheritance,Overloading,下面的代码将调用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(){

下面的代码将调用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();
}
#包括
使用名称空间std;
第五类{
公众:
void f(){x+=2;cout
B::f()
隐藏方法
V::f()
,这称为函数隐藏

读得好:

不,这里没有重载。正如上面所回答的,B的f()简单地隐藏了V的f(),因为D同时从B和V继承,而B是这两者中派生得最多的,因此它将从B中获取f()。并且只需指出,从V继承D是不必要的,因为V已经从B中包含了