class A{
public:
virtual void f(){ cout << "A::f()"<<endl;}
};

class B:public A{
public:
        virtual void f(){cout << "B::f()"<<endl;}
};

int main()
{
        A a;
        B b;

        A *p = &b;

        p->f();  //发生了多态,这里调用的是B::f()。因为有upcast,所以是多态。

        a = b;  //这里只是完成了一个赋值操作
        p = &a;

        p->f();   //调用的是A::f()
return 0; }

 

posted on 2019-03-27 14:12  newbird2017  阅读(116)  评论(0编辑  收藏  举报