#include <stdio.h> class Base{ public: int a(){ return 1; } }; class Inherit:public Base{ public: int a(){ return 2; } }; int main(int argc, char **argv) { Base *p=new Inherit(); printf("%d ",p->a()); }
输出是1。说明调用的是父类的函数。
class Base{ public: virtual int a(){ return 1; } };
输出是2。说明调用的是子类的函数。
所以当父类的函数是虚函数,调用的会是子类函数。