【0】操作符重载专题

【0】操作符重载专题

ID:44283804

大小:201.50 KB

页数:35页

时间:2019-10-20

【0】操作符重载专题_第1页
【0】操作符重载专题_第2页
【0】操作符重载专题_第3页
【0】操作符重载专题_第4页
【0】操作符重载专题_第5页
资源描述:

《【0】操作符重载专题》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、1、操作符重载定义:对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据导致不同类型的行为。实现机制:将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参;编译系统遵循函数重载的选择原则2021/9/161数据描述操作符重载的规则含义必须清楚,不能有二义性!只能重载C++语言中已有的运算符,不可臆造新的。不改变原运算符的优先级和结合性。不能改变操作对象的个数。经重载的运算符,其操作对象中至少应该有一个是自定义类型。2021/9/162数据描述可以重载的操作符重载+-*/%^&++--

2、~!=<>

3、+=-=*=/=^=&=

4、=<<>><<=>>===!=<=>=&&

5、

6、->*->()[]newnew[]deletedelete[]2021/9/163数据描述可重载操作符的使用说明函数操作符:(),可以带多个参数一元和二元均可重载:+-*&例如:+a、a+b前置和后置均可重载:++--例如:a++、++a除了赋值操作符=之外,基类中所有操作符重载均可被派生类继承!2021/9/164数据描述不能重载的操作符运算符运算符名称禁止重载的理由?:三目条件运算符C++中没有定义三目运算符的语法.和.*成员操作符为保证成员操作符对成

7、员访问的安全性::作用域操作符该操作符右操作数不是表达式sizeof类型字长操作符该操作符的操作数为类型名,不是表达式2021/9/165数据描述2、操作符重载的形式运算符重载为类的成员函数函数类型operator运算符(形参表){函数体;}参数个数=原操作数个数-1(后置++、--除外)运算符重载为类的友元函数friend函数类型operator运算符(形参表){}参数个数=原操作数个数,且至少应该有一个自定义类型的形参2021/9/166数据描述3、重载为类的成员函数只能重载为类成员函数的操作符:[]、=、()、->一元操

8、作符重载:+、-、*、&、!、++、--注意:++、--,前置后置均可!二元操作符重载2021/9/167数据描述1)一元操作符重载函数类型operatorop();实现功能opX;//X为类对象相当于函数调用X.operatorop();说明:函数无需任何参数,因为隐含了一个参数(this指针),操作数由对象的this指针给出。2021/9/168数据描述示例1ClassC{private:intdata;public:C&operator-(){data=-data;return*this;}}调用:CTemp;Temp=

9、-Temp;2021/9/169数据描述2)二元操作符重载函数类型operatorop(形参表)实现功能XopY//X、Y均为类对象相当于函数调用X.operatorop(Y)说明:其函数只需显式说明一个参数;该参数为运算符的右操作数,左操作数由this指针提供。2021/9/1610数据描述示例2ClassC{private:intdata;public:Coperator-(constC&a){Ctemp;temp=data-a.data;returntemp;}}调用:Ca,b,c;c=a-b;等价于c=a.operat

10、or-(b);2021/9/1611数据描述3)下标操作符:[]必须要以成员函数的形式重载!用于检查数组下标是否越界语法形式:type&operator[](…);consttype&operator[](…)const;常量成员函数C[i]<==>C.operator[](i)2021/9/1612数据描述示例3classintArray{public:int&opeartor[](int);private:int*a;intsize;…};int&intArray::opeartor[](inti){If(i<0

11、

12、i>=

13、size)throw(…);returna[i];};2021/9/1613数据描述4)函数操作符:()必须要以成员函数的形式重载!它可以包含多个参数,可用于多维数组的访问形式语法形式:type&operator()(…);C(x,name)<==>C.operator()(x,name)2021/9/1614数据描述示例4classintTwoArray{public:int&opeartor()(int,int);private:int*a;introws,cols;…};int&intTwoArray::opeartor

14、()(inti,intj){if(i<0

15、

16、i>=rows

17、

18、j<0

19、

20、j>=cols)throw(…);returna[i*cols+j];};2021/9/1615数据描述5)自增和自减操作符++、--都有前置和后置两种形式前置重载:operator++();后置重载:o

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

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

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