欢迎来到天天文库
浏览记录
ID:48081477
大小:518.50 KB
页数:39页
时间:2020-01-12
《五、运算符重载_面向对象程序设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、课程要求课程内容课程内容课程要求参考书目返回首页面向对象程序设计运算符重载基本概念成员运算符函数友元运算符重载特殊运算符重载面向对象程序设计作用运算符重载使得用户自定义的数据以一种更简洁的方式工作。2-16例如intx,y;y=x+y;complexc1,c2;//复数类对象c1=Cadd(c1,c2);//调用函数计算两个复数的和能表示为c1=c1+c2;?matrixm1,m2;//矩阵类对象m1=Madd(m1,m2);//调用函数计算两个矩阵的和能表示为m1=m1+m2;?定义运算符重载函数面向对象程序设计基本概念C++编译器在对运算符进行编译处理时,将一个运算符编译成如下
2、形式:一元运算符:@obj编译成operator@(obj)二元运算符:obj1@obj2编译成operator@(obj1,obj2)其中,关键字operator加上运算符名的函数称为运算符函数。由于C++中有前置++、--,后置++、--,为了区分它们,C++将后置++、--编译成:后置--:obj--编译成operator--(obj,0)后置++:obj++编译成operator++(obj,0)面向对象程序设计基本概念运算符重载的实现2-16返回类型operator运算符(参数表)被重载的运算符关键字函数名面向对象程序设计基本概念可以用作重载的运算符不允许重载的运算符2-
3、161、+、-、*、/、%、++、--2、&、
4、、~、^、<<、>>3、!、&&、
5、
6、4、<、>、>=、<=、==、!=5、=、+=、-=、*=、/=、%=、&=、
7、=、^=、6、[]、()、->、,、new、delete、new[]、delete[].*(指针)?:::面向对象程序设计基本概念编译程序选用运算符函数的原则遵循函数重载的选择原则:根据参数匹配的原则运算符的重载规则2-16(1)重载后运算符的优先级与结合性不会改变。(2)不能改变原运算符操作数的个数。(3)不能重载C++中没有的运算符。(4)不能改变运算符的原有语义。面向对象程序设计友元运算符函数类内声明类外定义形
8、式2-16friend返回类型operator运算符(参数表)返回类型operator运算符(参数表){……}类外函数,不属于任何类对象,没有this指针重载双目运算符,参数表需两个参数重载单目运算符,参数表需一个参数不能用友元重载的运算符:=()[]->面向对象程序设计友元运算符函数复数类双目+运算的实现classComplex{public:Complex(doubler=0,doublei=0){Real=r;Image=i;}voidprint()const{cout<<'('<9、constComplex&c1,constComplex&c2);private:doubleReal,Image;};friendComplexoperator+(constComplex&c1,constComplex&c2);面向对象程序设计友元运算符函数2-16复数类双目+运算的实现Complexoperator+(constComplex&c1,constComplex&c2){Complexc;c.Real=c1.Real+c2.Real;c.Image=c1.Image+c2.Image;returnc;}intmain(){Complexc1(2.5,3.7),c210、(4.2,6.5);Complexc;c=c1+c2;c.print();return0;}面向对象程序设计友元运算符函数复数类双目-运算的实现intmain(){Complexc1(2.5,3.7),c2(4.2,6.5);Complexc;c=c1-c2;c.print();return0;}面向对象程序设计友元运算符函数复数类单目-运算的实现intmain(){Complexc1(2.5,3.7),c2(4.2,6.5);Complexc;c=-c1;c.print();return0;}面向对象程序设计classComplex{public:Complex(doubler=11、0,doublei=0){Real=r;Image=i;}voidprint()const{cout<<'('<
9、constComplex&c1,constComplex&c2);private:doubleReal,Image;};friendComplexoperator+(constComplex&c1,constComplex&c2);面向对象程序设计友元运算符函数2-16复数类双目+运算的实现Complexoperator+(constComplex&c1,constComplex&c2){Complexc;c.Real=c1.Real+c2.Real;c.Image=c1.Image+c2.Image;returnc;}intmain(){Complexc1(2.5,3.7),c2
10、(4.2,6.5);Complexc;c=c1+c2;c.print();return0;}面向对象程序设计友元运算符函数复数类双目-运算的实现intmain(){Complexc1(2.5,3.7),c2(4.2,6.5);Complexc;c=c1-c2;c.print();return0;}面向对象程序设计友元运算符函数复数类单目-运算的实现intmain(){Complexc1(2.5,3.7),c2(4.2,6.5);Complexc;c=-c1;c.print();return0;}面向对象程序设计classComplex{public:Complex(doubler=
11、0,doublei=0){Real=r;Image=i;}voidprint()const{cout<<'('<
此文档下载收益归作者所有