[基础] 虚函数

1. 虚函数会导致的结果:直接上个经典例子...

class A {
public:
    void a() {
        cout<<"A.a"<<endl;
    }
    virtual void b() {
        cout<<"A.b"<<endl;
    }
};
class B: public A {
public:
    void a() {
        cout<<"B.a"<<endl;
    }
    void b() {
        cout<<"B.b"<<endl;
    }
};
int main(int argc, const char * argv[]) {
    A *a1 = new A();
    B *b = new B();
    A *a2 = new B();
    a1->a(); // A.a
    a1->b(); // A.b
    b->a(); // B.a
    b->b(); // B.b
    a2->a(); //A.a 非虚函数,根据基类
    a2->b(); //B.a 虚函数,根据子类
    return 1;
}

2. 机制解释

XXX

原文地址:https://www.cnblogs.com/littletail/p/5266588.html