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; }