#include<iostream> #include<stdlib.h> using namespace std; class Base1{ public: //一般的虚函数成员声明语法:virtual 函数类型 函数名(形参表); virtual void display() const;//定义虚函数,虚函数声明只能在类定义的原函数声明,不能再成员函数实现的时候 //虚构函数声明语法:virtual ~函数类型类名(); //纯虚函数声明语法:virtual 函数类型 函数名(参数表)=0; //基类可以不给出函数实现部分 }; void Base1::display() const{ cout<<"Base1::dispaly()"<<endl; } class Base2:public Base1{ public: void display() const;//覆盖基类的虚函数 };//派生类Base2 void Base2::display() const{ cout<<"Base2::dispaly()"<<endl; } class Derived:public Base2{ public: void display() const;//覆盖基类的虚函数 };//派生类 Derived void Derived::display() const{ cout<<"Derived::displasy()"<<endl; } void fun(Base1 *ptr){ ptr->display();//指向基类的指针 ,因为成员函数通过指针、引用来访问虚函数 } void fun2(Base1 *ptr){ ptr->Base1::display();//限定只调用基类的虚函数 } int main(){ system("color 3"); Base1 base1; Base2 base2; Derived derived; fun(&base1); fun(&base2); fun(&derived); fun2(&base1); fun2(&base2); fun2(&derived); system("pause"); return 0; }