一 概述
上一节我们学校了把派生类对象赋给基类指针并且访问基类成员的方法,本节我们再学习一种新方法,就是在基类的成员函数前面加关键字virtual
二 示例演示及结果输出
2.1 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
| #include<iostream> using namespace std; class father { public: virtual void run()const{cout<<"父亲可以跑万米"<<endl;} void jump(){cout<<"父亲可以跳五个台阶"<<endl;} }; class son:public father { public: virtual void run()const{cout<<"子类可以跑10万米"<<endl;} void jump(){cout<<"子类可以跳10个台阶"<<endl;} }; int main() { father *p=new son; p->run(); p->jump(); return 0; }
|
2.2 输出结果
2.3 输出说明
- 输出结果:run方法调用子类,jump方法调用父类
三 总结
- 为什么会这样呢,这是因为在函数run()前面加关键字virtual,表示该函数可能被多个对象所拥有,而且功能不一,换句话说多个对象在调用同一个名字的函数时产生的效果不一样。那么系统在执行到有关键字virtual的函数时就会自动判断是哪个对象调用了它,然后调用该对象的同名函数