C++语言程序设计 教学课件 作者 邓振杰 第08章.ppt

C++语言程序设计 教学课件 作者 邓振杰 第08章.ppt

ID:50041732

大小:158.50 KB

页数:27页

时间:2020-03-08

C++语言程序设计 教学课件 作者 邓振杰 第08章.ppt_第1页
C++语言程序设计 教学课件 作者 邓振杰 第08章.ppt_第2页
C++语言程序设计 教学课件 作者 邓振杰 第08章.ppt_第3页
C++语言程序设计 教学课件 作者 邓振杰 第08章.ppt_第4页
C++语言程序设计 教学课件 作者 邓振杰 第08章.ppt_第5页
资源描述:

《C++语言程序设计 教学课件 作者 邓振杰 第08章.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第8章运算符重载8.1概述8.2运算符重载的一般规则8.3一些特殊操作符的重载运算符重载就是给已有运算符赋予更多的含义。通过重新定义运算符,使它能够用于特定类的对象执行特定的功能。运算符重载提供了重新定义语言、扩展语言的能力,使程序更加容易阅读和调试。8.1概述运算符通常是针对类中的私有成员进行操作,因此重载运算符应该能够访问类中的私有成员,所以运算符重载一般采用成员函数或友元函数的方式。运算符重载的过程是将现有运算符与成员函数或友元函数相关联,使得该运算符具有将该类的对象用作其操作数的能力。如:if(obj1<=obj2){……}其中obj1和obj2为类的对象,对象

2、的比较运算可在成员函数中定义或在友元中定义,并与比较运算符关联。编译器可以通过检查运算符数据类型来区分重载的运算符,运算符重载是多态性的一种形式,即运算符多态性。8.2运算符重载的一般规则运算符重载具有以下原则:(1)重载的运算符是C++中已经存在的运算符,不能够主观创造。(2)运算符重载不能改变运算符的语法结构,即操作数的个数。(3)运算符重载不能改变C++语言中已定义的运算符的优先顺序和结合性。(4)运算符重载一般不改变运算符功能。(5)不能重载的运算符有:sizeof()运算符;成员运算符(.);指向成员的指针运算符(*);作用域运算符(::);条件运算符(?:)

3、。8.3一些特殊操作符的重载运算符重载函数是指含有实际的重载运算符的函数,一般采用两种形式:重载为类的成员函数形式和友元函数形式。8.3.1一元运算符重载8.3.1.1重载为类的成员函数将运算符重载函数说明为类的成员函数的格式如下:<类型>operator<运算符>(<参数列表>)要重载的运算符必须置于关键字operator之后。【例8.1】重载运算符++。classPoint{private:intxcoord;intycoord;public:Point(){xcoord=0;ycoord=0;}voidoperator++(){++xcoord;++ycoord;

4、}};voidmain(){Pointobj1;obj1++;//使xcoord、ycoord增加1++obj1;//使xcoord、ycoord增加2}8.3.1.2重载为类的友元函数将运算符重载函数说明为类的友元函数的格式如下:<类型>operator<运算符>(<参数列表>)必须在类的定义中说明该运算符重载函数为类的友元函数。【例8.2】用友元函数重载运算符++。#include"iostream.h"classPoint{private:intxcoord;intycoord;public:Point()//无参数构造函数{xcoord=0;ycoord=0;}

5、Point(intx,inty)//单一参数构造函数{xcoord=x;ycoord=y;}voiddisplay(){cout<<“(”<

6、ord++,e.ycoord++);}voidmain(){Pointp1(10,10),p2;p2=p1++;p1.display();p2.display();p2=++p1;p1.display();p2.display();}程序运行结果为:(11,11)(10,10)(12,12)(12,12)8.3.2二元运算符重载8.3.2.1二元算术运算符重载【例8.3】加法运算符重载PointPoint::operator+(Pointa){Pointp;//临时对象p.xcoord=xcoord+a.xcoord;p.ycoord=ycoord+a.ycoord;r

7、eturnp;//返回临时对象}【例8.4】为字符串重载+运算符。StringString::operator+(Stringss){Stringtemp;//声明一个临时字符串tempstrcpy(temp.str,str);//将该字符串复制到tempstrcat(temp.str,ss.str);//参数字符串相加returntemp;//返回temp字符串}按以下方式使用:Strings1="Welcome";Strings2="toC++";Strings3;s3=s1+s2;【例8.5】重载复合赋值运算符。voidPoint:

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

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

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