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

多态性和虚函数.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

关于多态性和虚函数第1页,讲稿共30页,2023年5月2日,星期三多态性不同的对象接收到相同的消息时产生多种完全不同的行为的现象称为多态性。C++支持两种多态性:编译时的多态性和运行时多态性。编译时的多态性使用重载来获得,运行时的多态性通过使用继承和虚函数获得。C++语言中,重载包括函数重载和运算符重载。第2页,讲稿共30页,2023年5月2日,星期三6.1运算符重载6.1.1运算符重载概述6.1.2用成员函数重载运算符6.1.3用友元函数重载运算符6.1.4几个常用运算符的重载第3页,讲稿共30页,2023年5月2日,星期三6.1.1运算符重载概述1.运算符重载定义C++中预定义的运算符的操作对象只能是基本数据类型,运算符重载是对运算符进行重新定义,赋予已有符号新功能的要求。不能重载的运算符是:(1)成员访问运算符.(2)作用域运算符∷(3)条件运算符?:(4)成员指针运算符*(5)编译预处理命令的开始符号#第4页,讲稿共30页,2023年5月2日,星期三2.运算符重载的规则

⑴C++中的运算符除了少数几个以外,几乎全部可以重载,程序员不能定义新的运算符,只能重载已有的这些运算符。⑵重载之后运算符的优先级和结合性都不能改变。⑶运算符重载是针对新类型数据的实际需要,对原有运算符进行适当的改造。3.运算符重载的形式运算符重载可以使用成员函数和友元函数两种形式。运算符重载的实质就是函数重载。第5页,讲稿共30页,2023年5月2日,星期三6.1.2用成员函数重载运算符在类定义体中声明运算符函数的形式为:typeoperator@(参数表)其中@为运算符符号若运算符是一元的,则参数表为空,此时当前对象作为此运算符的单操作数;若运算符是二元的,则参数表中有一个操作数,此时当前对象作为此运算符的左操作数,参数表中的操作数作为此运算符的右操作数。运算符函数的定义如下:type类名::operator@(参数表){//运算符处理程序代码}重载运算符的使用方法同原运算符一样,只是它的操作数一定要是定义它的特定类的对象。第6页,讲稿共30页,2023年5月2日,星期三【例6.1】用成员函数重载运算符+#includeiostream.hclasspoint{private:floatx,y;public:point(floatxx=0,floatyy=0){x=xx;y=yy;}floatget_x(){returnx;}floatget_y(){returny;}pointoperator+(pointq); //重载运算符“+”};pointpoint::operator+(pointq){returnpoint(x+q.x,y+q.y);}voidmain(){pointp1(3,3),p2(2,2),p3; //声明point类的对象p3=p1+p2;或p1.operator+(p2) //两点相加coutp1+p2:x=p3.get_x(),y=p3.get_y()endl;}第7页,讲稿共30页,2023年5月2日,星期三【例6.2】用成员函数重载运算符++#includeiostream.hpointpoint::operator++()classpoint{{++x;private:++y; floatx,y;return*this;public:

文档评论(0)

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

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

1亿VIP精品文档

相关文档