第08章_多态性

第08章_多态性

ID:44976894

大小:105.00 KB

页数:42页

时间:2019-11-06

第08章_多态性_第1页
第08章_多态性_第2页
第08章_多态性_第3页
第08章_多态性_第4页
第08章_多态性_第5页
资源描述:

《第08章_多态性》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、本章主要内容多态性运算符重载虚函数纯虚函数抽象类多态性的概念多态性是面向对象程序设计的重要特征之一。多态性是指发出同样的消息被不同类型的对象接收时有可能导致完全不同的行为。多态的实现:p252函数重载运算符重载虚函数8.1运算符重载运算符重载是使同一个运算符作用于不同类型的数据时具有不同的行为。例如,我们声明了一个点类point和它的对象pointp1(1,1),p2(3,3),并希望能使用“+”运算符实现表达式“p1+p2”,就需要重载“+”运算符。运算符重载是实质上将运算对象转化为运算函数的实参,并根据实参的类型来确定重载的运算函数。1.只能重载C++中已有的运算符,不能臆造新的运算符;

2、2.类属关系运算符“.”、作用域分辨符“::”、成员指针运算符“*”、sizeof运算符和三目运算符“?:”不能重载。3.重载之后运算符的优先级和结合性都不能改变,单目运算符只能重载为单目运算符,双目运算符只能重载为双目运算符。4.运算符重载后的功能应当与原有功能相类似。5.重载运算符含义必须清楚,不能有二义性。运算符的重载形式有两种:(1)重载为类的成员函数;(2)重载为类的友元函数。8.1.1运算符重载的规则运算符重载为类的友元函数的一般语法形式为:friend<函数类型>operator<运算符>(形参表){函数体;}其中:(1)函数类型:重载运算符的返回值类型,即运算结果类型;(2)

3、operator:定义运算符重载函数的关键字。(3)运算符:要重载的运算符名称。(4)形参表:给出对象和类型。(5)friend:运算符重载为友元函数时的关键字。1.双目运算:oprd1Boprd2把B重载为oprd1所属类的成员函数,只有一个形参,形参的类型是oprd2所属类。例如,经过重载之后,表达式oprd1+oprd2就相当于函数调用oprd1.operator+(oprd2)。2.单目运算1)前置单目运算:Uoprd把U重载为oprd所属类的成员函数,没有形参。例如,“++”重载的语法形式为:<函数类型>operator++();++oprd就相当于函数调用oprd.operato

4、r++();8.1.2运算符重载为成员函数2)后置单目运算oprdV运算符V重载为oprd所属类的成员函数,带有一个整型(int)形参。例如,后置单目运算符“--”重载的语法形式为:<函数类型>operator--(int);oprd--就相当于函数调用oprd.operator--(0);//EX8_1.cpp:演示重载二维点point的“+”、“-”运算符#includeclasspoint{private:floatx,y;public:point(floatxx=0,floatyy=0){x=xx;y=yy;}floatget_x(){returnx;}flo

5、atget_y(){returny;}pointoperator+(pointp1);//重载运算符“+”pointoperator-(pointp1);//和“-”为成员函数};pointpoint::operator+(pointq){returnpoint(x+q.x,y+q.y);}pointpoint::operator-(pointq){returnpoint(x-q.x,y-q.y);}voidmain(){pointp1(3,3),p2(2,2),p3,p4;//声明point类的对象p3=p1+p2;//两点相加p4=p1-p2;//两点相减cout<<"p1+p2:x="

6、<

7、现时间增加1秒钟。运算符重载//8_2.cpp#includeusingnamespacestd;classClock//时钟类声明{public://外部接口Clock(intNewH=0,intNewM=0,intNewS=0);voidShowTime();Clock&operator++();//前置单目运算符重载Clockoperator++(int);//后置单目运算符重载pr

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

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

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