貌似Java里没有这个概念,默认情况下都是虚函数。
#include
using namespace std;
class A
{
public:
int x;
//虚函数,不加virtual,funA里的a.getX(),即便传入的是B对象,调用的也是A类里的getX(),
//加了以后,能得到真实的类型,调用的就是B类里的getX()
virtual int getX()
{
return x;
}
};
class B :virtual public A
{
public:
int getX()
{
return x+1;
}
};
//把类B的对象作类A的对象处理
int funA(A &a)
{
return a.getX();
}
int funB(B &b)
{
return b.getX();
}
int main()
{
B b;
b.x=10;
//若A类中的getX不是虚函数,下面返回的是10,加了以后,返回的是11
cout<