网站大量收购独家精品文档,联系QQ:2885784924

海口经济学院信息工程学院C++语言程序设计课件 第九章 虚函数和多态性.ppt

海口经济学院信息工程学院C++语言程序设计课件 第九章 虚函数和多态性.ppt

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 虚函数与多态性 9.1 多态性与虚函数 9.2 运算符重载 9.3 友元函数——重载运算符 第9章 虚函数与多态性 教学目标: 1. 了解虚函数、抽象类、多态等概念; 2 . 领会抽象类与具体类的关系及差别、虚函数与一般函数的关系及差别; 教学重点: 1. 多态与虚函数的应用 2. 运算符的重载 教学难点: 1.纯虚函数和抽象类的应用。 9.1 多态性与虚函数 9.1.1 多态性的概念 9.1.2 虚函数 9.1.3 虚析构函数 9.1.4 纯虚函数与抽象类 9.1.1 多态性的概念 9.1.2 虚函数 9.1.3 虚析构函数 9.1.4 纯虚函数与抽象类 9.1.5 动态绑定(选读) 9.2 运算符的重载 说明: Complex Complex::operator+(Complex c){ Complex Temp(Real+c.Real , Image+c.Image) ; return Temp ; } 当成员函数的参数为同一类(class)的对象或它的引用,在函数体内使用参数对象的私有数据成员时,可用对象名加成员访问操作符点号进行。 从逻辑上讲,每个对象有自己的成员函数,访问同类其他对象的私有数据成员应通过该对象的公有函数,不能直接访问。但在物理上只有一个成员函数代码,所以直接访问是合理的。仅在成员函数中可以这样做。 const引用进一步说明: 引用在内部存放的是被引用对象的地址,不可寻址的值是不能引用的;当引用作为形参时,实参也不能使用不可寻址的值,更不可能进行类型转换(如:实数转换为整数)。但是const引用不同,它是只读的,为了绝对保证不会发生误改,编译器实现const引用时,生成一个临时对象,引用实际上指向该临时对象,但用户不能访问它。所以const引用可以实现不可寻址的值(包括字面常量)的引用。 例如: double dval=1024; const int ri=dval; 是正确的,编译器将其转换为: double dval=1024; int temp=dval; const int ri=temp; 因有临时对象,引用和类型转换都实现了。 当const引用作为形参时,实参也能使用不可寻址的值,并能进行类型转换。 9.3 友元函数——重载运算符 [例9.2]引用,实现运行时的多态性 [例9.3] 业绩分的计算 【例9.4】复数类 【例9.4_1】 用友元函数重载运算符 int main(void){ Complex c1(1.0,1.0) , c2(2.0,2.0) , c3(4.0,4.0) , c; double d=0.5 ; c1.Print(); c=c2+c3; c.Print(); //两复数相加 c+=c2+=c1; c.Print(); //连续加赋值 c=c+d; c.Print(); //复数加实数 c=d+c; c.Print(); //实数加复数 c=c3*c2; c.Print(); c=c3/c1; c.Print(); c=c3*d; c.Print(); //复数乘以实数 c=c3/d; c.Print() ; //复数除以实数 coutc3的模为:abs(c3)endl ; return 0;} 小结: 通过本章的学习大家了解了虚函数、抽象类、多态等概念;领会抽象类与具体类的关系及差别、虚函数与一般函数的关系及差别; 思考题: 1.什么是多态性?在C++语言中是如何实现多态性的? 2.在程序设计语言中,函数名重载的目的是什么? 作业题: 1.给类String定义下列重载运算符函数, (1)赋值运算符:= (2)连结运算符(连接两个字符):+ (3)提取操作》。 友元函数注意点: 1.?友元函数不是类的成员函数,在函数体中访问对象的成员,必须用对象名加运算符“.”加对象成员名。但友元函数可以访问类中的所有成员,一般函数只能访问类中的共有成员。 2.?友元函数不受类中的访问权限关键字限制,可以把它放在类的公有、私有、保护部分,但结果一样。 3.?某类的友元函数的作用域并非该类作用域。如果该友元函数是另一类的成员函数,则其作用域为另一类的作用域,否则与一般函数相同。 class Student{ string coursename; //课程名 int classhour; //学时

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档