本文共 523 字,大约阅读时间需要 1 分钟。
class fruit { public: void func() { printf("fruit\n"); } virtual void vfunc() { printf("v fruit\n"); } }; class apple:public fruit { public: void func() { printf("apple\n"); } void vfunc() { printf("v apple\n"); } }; int main(int argc, char* argv[]) { fruit* f = new apple(); //注意 f是父类指针 f->func(); f->vfunc(); return 0; } 结果是: fruit v apple 例子中func采用了函数覆盖 vfunc采用了虚函数(函数重写) 当fruit类的指针指向一个apple类的对象时,func调用了父类的函数,vfunc调用了子类的函数。 如过是函数覆盖,调用成员函数时,直接调用对象指针所属类的成员函数,例子中为fruit 虚函数的情况下,调用成员函数时,调用的是指向对象的所属类的成员函数,例子中为apple
转载地址:http://nslws.baihongyu.com/