标签:
class B0 //基类B0声明 {public: void display() {cout<<"B0::display()"<<endl;} }; class B1: public B0 { public: void display() { cout<<"B1::display()"<<endl; } }; class D1: public B1 { public: void display() { cout<<"D1::display()"<<endl; } };
那么对于上例:因为B1继承了B0,所以其中同名函数就会被B0中的函数覆盖,所以输出时,三个函数都只能输出B0::display();
但是引入虚函数之后:
class B0 //基类B0声明 {public: //外部接口 virtual void display() //虚成员函数 {cout<<"B0::display()"<<endl;} }; class B1: public B0 //公有派生 { public: void display() { cout<<"B1::display()"<<endl; } }; class D1: public B1 //公有派生 { public: void display() { cout<<"D1::display()"<<endl; } };
因为定义了虚函数,所以通过指针调用时调用的都是自己类中的成员函数,而不会同名函数只调用基类中的函数,这样增加了多态性
标签:
原文地址:http://www.cnblogs.com/jijiji/p/4840384.html