6 多态性与虚函数

6 多态性与虚函数

ID:44235529

大小:512.00 KB

页数:56页

时间:2019-10-19

6 多态性与虚函数_第1页
6 多态性与虚函数_第2页
6 多态性与虚函数_第3页
6 多态性与虚函数_第4页
6 多态性与虚函数_第5页
资源描述:

《6 多态性与虚函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第6章多态性与虚函数6.1多态性概述6.2虚函数6.3纯虚函数和抽象类在OOP中:窗口对象行为3移动同一消息棋子对象行为46.1多态性概述多态性是面向对象程序设计的重要特征之一。多态性是指发出同样的消息被不同类型的对象接收时导致完全不同的行为。多态的实现:1函数重载2运算符重载3虚函数4类模板在C++中,多态的实现和联编这一概念有关。所谓联编就是把函数名与函数体的程序代码连接(联系)在一起的过程。静态联编联编动态联编静态联编就是在编译阶段完成的联编。静态联编函数调用速度很快。效率高,但缺乏灵活性;动

2、态联编是运行阶段完成的联编。动态联编在运行时才能确定调用哪个函数,它降低了程序的运行效率,但增强了程序的灵活性。C++实际上是采用了静态联编和动态联编相结合的联编方法。编译时的多态性多态性运行时的多态性编译时的多态是通过静态联编来实现的。运行时的多态是通过动态联编实现的。在C++中:编译时多态性主要是通过函数重载和运算符重载实现的。运行时多态性主要是通过虚函数来实现的。6.2虚函数6.2.1虚函数的引入6.2.2虚函数的作用和定义6.2.3虚析构函数6.2.4虚函数与重载函数的关系6.2.5多继承与

3、虚函数#includeclassbase{//例6.1-1虚函数引例inta,b;public:base(intx,inty){a=x;b=y;}voidshow(){cout<<"调用基类base的show函数";cout<<"a="<

4、rive的show函数";cout<<"c="<show();mp=&mc;mp->show();}运行结果?6.2.1虚函数的引入#include//例6.1-1虚函数引例classbase{inta,b;public:base(intx,inty){a=x;b=y;}voidshow(){cout<<"调用基类base的show

5、函数";cout<<"a="<show();mp=&mc;mp->s

6、how();}程序运行结果不是:调用基类base的show函数a=50b=50调用派生类dirive的show函数c=30程序运行结果如下:调用基类base的show函数a=50b=50调用基类base的show函数a=10b=20为什么?在C++中规定:基类的对象指针可以指向它的公有派生的对象,但是当其指向公有派生类对象时,它只能访问派生类中从基类继承来的成员,而不能访问公有派生类中定义的成员,例如:classA{public:voidprint1(){...}};classB:publicA{p

7、ublic:voidprint2(){...}};voidmain(){A*p1;//定义基类A的指针变量p1Bop2;//定义派生类B的对象op2p1=&op2;//将指针变量p1指向派生类对象op2p1->print1();p1->print2();}正确,基类指针变量p1可以访问派生类中从基类继承来的成员函数print1()错误,基类指针变量p1不能访问派生类中定义的成员函数print2()#include//例6.1-1虚函数引例classbase{inta,b;pu

8、blic:base(intx,inty){a=x;b=y;}voidshow(){cout<<"调用基类base的show函数";cout<<"a="<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。