长篇大论这里就不说了,举个例子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;} 结果是:fruitv apple 例子中func采用了函数覆盖vfunc采用了虚函数当fruit类的指针指向一个apple类的对象时,func调用了父类的函数,vfunc调用了子类的函数。 如过是函数覆盖,调用成员函数时,直接调用对象指针所属类的成员函数,例子中为fruit虚函数的情况下,调用成员函数时,调用的是指向对象的所属类的成员函数,例子中为apple
时间: 2024-10-29 05:08:11