B *pb = (B*)pa;首先你要明白,执行这个语句之后,pa和pb的自身的类型是没有变化的,这很重要。先说pb->fun1(),这是函数在派生类B中进行了重定义,所以运行后是派生类中的结果。看pb->fun2(),派生类中没有重定义,所以还和基类一样。再看fun3,这是派生类自己的函数。最后看pb->fun0(),这是个虚函数。我只说说我的理解,不能保证正确。我们知道虚函数是动态绑定机制,运行的虚函数是引用所绑定的或者指针所指向的对象所属类型定义的版本,也就是说,pb->fun0()所调用的取决于运行时绑定到pb的类型,很明显,这是基类的。好了,这下就应该明了了,