请问为什么输出12而不是22

#include class Base { public:void Fun() { cout << "1" << endl;} }; class Derived:public Base { public:void Fun() { cout << "2" << endl; } }; int main() { Derived a; Base *p; p=&a; p->Fun(); a.Fun(); return 0; }

因为不死virtual function。如下,改为virtual function就输出22了。

#include <iostream>

using namespace std;

class Base {
    public: 
    virtual void Fun() {
        cout << "1" << endl;
    }
};
class Derived: public Base {
    public: 
    virtual void Fun() {
        cout << "2" << endl;
    }
};
int main() {
    Derived a;
    Base * p;
    p = & a;
    p -> Fun();
    a.Fun();
    return 0;
}


// Output
2
2