0%

C++ 虚函数

貌似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<