欢迎来到天天文库
浏览记录
ID:50297355
大小:165.50 KB
页数:50页
时间:2020-03-07
《C++面向对象程序设计 教学课件 作者 张德慧 周元哲 主编第7章 运算符重载.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《C++面向对象程序设计》教学内容第1章C++概述第2章类和对象第3章面向对象程序设计概述第4章进一步学习类和对象第5章堆与复制构造函数第6章继承性:派生类第7章运算符重载第8章虚函数和多态性第9章模板第10章类库和C++的标准模板库STL第11章输入输出流第12章异常处理第7章运算符重载7.1重载运算符的目的7.2运算符重载语法7.3成员运算符函数7.4友元运算符函数7.5成员运算符函数与友元运算符函数比较7.6“++”和“--”的重载7.7赋值运算符“=”的重载7.7下标运算符”[]”与函数调用运算符”()”的重载7.9
2、构造函数用于类型转换7.10应用举例7.1重载运算符的目的简略的表达方法函数式的表达方法运算符函数运算符重载简略的表达方法x+y*z简略的表达方法是一种缩略或公式化表达的方法。好处:简明直观、能提高交流效率。函数式的表达方法classComplex{private:doublereal;doubleimage;public:Complex();Complex&Add(Complex&);};//…Complexobject1,object2,object3;……object3=object1.Add(object2);这种表
3、示复数加法很不直观运算符函数classcomplex{//verysimplifiedcomplexdoublere,im;public:complex(doubler,doublei):re(r),im(i){}complexoperator+(complex);complexoperator*(complex);};运算符函数运算符重载voidf(){complexa=complex(1,3.1);complexb=complex(1.2,2);complexc=b;a=b+c;b=b+c*a;c=a*b+complex
4、(1,2);}7.2运算符重载语法运算符重载C++语言提供的标准运算符可以重新在类中定义,使标准运算符作用于类的对象,从而使对象的计算操作表示得既自然又符合常规。运算符函数C++将运算符看作一种特殊类型的函数,运算符的重载是通过对运算符函数的重载实现的。运算符函数名由关键字operator和重载得运算符组成。运算符重载的方法首先在类定义时说明待重载的运算符,其格式为:返回值类型operatorop(参数表);然后象定义函数一样定义重载运算符函数。返回值类型类名称∷operatorop(参数表){//……运算符处理程序代码}运
5、算符重载的实质必要性C++中预定义的运算符其运算对象只能是基本数据类型,而不适用于用户自定义类型(如类)实现机制运算符重载的实质就是函数重载:每个运算符对应各自的运算符函数,根据操作数的不同调用不同的同名函数。将指定的运算表达式转化为对运算符函数的调用,运算对象转化为运算符函数的实参。7.3成员运算符函数重载为类成员函数时参数个数=原操作数个数-1(后置++、--除外)当类的对象调用这种运算符函数时,对象中的成员数据就可以是一个操作数,另一个操作数才通过参数传递来获得。如:classcomplex{publiccomplex
6、operator+(complexc2);…….}#includeclasscomplex//复数类声明{public://外部接口complex(doubler=0.0,doublei=0.0){real=r;imag=i;}//构造函数complexoperator+(complexc2);//+重载为成员函数complexoperator-(complexc2);//-重为载成员函数voiddisplay();//输出复数private://私有数据成员doublereal;//复数实部dou
7、bleimag;//复数虚部};简单复数类的运算符重载//重载运算符函数的实现complexcomplex::operator+(complexc2){complexc;c.real=c2.real+real;c.imag=c2.imag+imag;returncomplex(c.real,c.imag);}简单复数类的运算符重载(续)//重载运算符-函数实现complexcomplex::operator-(complexc2){complexc;c.real=real-c2.real;c.imag=imag-c2.ima
8、g;returncomplex(c.real,c.imag);}简单复数类的运算符重载(续)voidcomplex::display(){cout<<"("<
此文档下载收益归作者所有