第七讲多态性与虚函数说课.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * * * * * * * * * * * * * * * * * * * * * * * 多态性与虚函数 纯虚函数与抽象类 格式: virtual 函数返回值类型 函数名(形参列表)=0; 说明: 纯虚函数在基类中没有具体的实现,要求在公有派生类中根据实际需要定义它的实现; 定义有纯虚函数的基类,其构造函数和析构函数中不允许调用纯虚函数; 纯虚函数也可以有函数体,它与一般的虚函数形式上的不同在于后边有=0; 如果一个类中定义了纯虚函数,那么这个类被称为抽象类。 多态性与虚函数 关于抽象类: 如果一个类中定义了纯虚函数,那么这个类被称为抽象类; 抽象类是一种特殊的为了多态地使用其中的成员函数的类,它为一个类族(包含有传递继承关系的多层派生类)提供统一的操作界面; 抽象类自身无法实例化,即无法创建抽象类的对象; 抽象类不能作为参数类型、函数返回值或强制类型转换,但可以定义抽象类的指针和引用以访问派生类成员; 抽象类的派生类中必须重新定义基类中的纯虚函数,否则它仍被看做是抽象类。 多态性与虚函数 例 7.5 抽象类应用举例 多态性与虚函数 多态性与虚函数 虚析构函数 程序输出结果是什么? 多态性与虚函数 说明: 在C++中,如果delete运算符用于释放指向派生类对象的基类指针,不管基类指针所指向的对象是何种类型,也不管每个类的析构函数名是不相同的这样的事实,系统都会为这些对象调用基类的析构函数。 解决办法: 将基类析构函数声明为虚析构函数,使所有派生类的析构函数自动成为虚析构函数(尽管名字不同)。这样使用delete运算符时,系统就会调用相应类的析构函数。 多态性与虚函数 只需更改: 课堂练习 1. 读程序写结果 课堂练习 2. 读程序写结果 课堂练习 课堂练习 3. 写一个程序,定义抽象基类Shape,由它派生出3个派生类:Circle(圆)、Rectangle(矩形)、Triangle(三角形),设计一个函数printArea,使其可以分别输出以上三者的面积,3个图形的数据在定义对象时给定。 课堂练习 作 业 编写完整的C++程序(包括程序说明和注释) 1、扩充例7.3,使之具有如下功能: 1) 修改该类,使之能用重载的和运算符输入和输出复数(要删除原例中的show函数); 2) 重载乘法和除法运算符,使之能执行两个复数的代数乘法和代数除法运算; 3) 重载运算符==和!=,使之能比较两个复数; 4) 重载运算符=,使之能进行两个复数的赋值运算。 2、定义抽象基类Shape,由它派生出5个派生类: Circle(圆)、Square(正方形)、Rectangle(矩形)、Trapezoid(梯形)、Triangle(三角形)。用虚函数分别计算几种图形的面积,并求它们的和。要求用基类指针数组,使它的每一个元素指向一个派生类对象。 * * * * * * * * * * * * * * * * * * * 第七讲 多态性与虚函数 主讲人:生 龙 Email: shenglong@hebeu.edu.cn 内容提要 多态性与虚函数 ? 基本概念 ? 运算符重载 ? 虚函数 ? 纯虚函数与抽象类 ? 虚析构函数 课堂练习 作业 基本概念 消息——对类的成员函数的调用 动作——成员函数的实现(定义) 程序编译时的多态性——函数和运算符重载——静态关联 程序运行时的多态性——继承和虚函数——动态关联 多态性是指不同的对象收到相同的消息时,产生不同的动作。 关联(联编)——确定操作对象的过程叫做关联 多态性与虚函数 多态性与虚函数 例 7.1 多态性与虚函数 多态性与虚函数 多态性与虚函数 多态性与虚函数 多态性与虚函数 多态性与虚函数 多态性与虚函数 多态性与虚函数 多态性与虚函数 运算符重载——本质是函数重载 格式: 函数返回值类型 operator 运算符(形参列表) {函数体;} 其中,关键字operator加上运算符名构成运算符函数名。 不可重载的运算符有:(防止破坏C++的安全机制) . 成员选择运算符 .* 成员指针运算符 :: 作用域限定运算符 ? : 三目条件运算符 sizeof 求字节数运算符 多态性与虚函数 运算符重载的规则: 不能重载C++中没有的运算符; 重载后运算符的优先级和结合性不变,目数和语法结构也不变; 运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造,因此不能改变运算符的语义。 多态性与虚函数 1、运算符重载作为成员函数 格式: 函数返

文档评论(0)

w5544434 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档