欢迎来到天天文库
浏览记录
ID:59102642
大小:147.19 KB
页数:49页
时间:2020-09-25
《第10章运算符重载ppt课件.pptx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、1第十章运算符重载2函数的重载所谓函数的重载是指完成不同功能的函数可以具有相同的函数名。C++的编译器是根据函数的实参来确定应该调用哪一个函数的。intfun(inta,intb){returna+b;}intfun(inta){returna*a;}voidmain(void){cout<2、)sum=a+b;floatadd,x=3.2,y=2.5;(float)=(float)+(float)add=x+y;charstr[4],c1[2]="a",c2[2]="b";(char*)=(char*)+(char*)str=c1+c2;编译系统中的运算符“+”本身不能做这种运算,若使上式可以运算,必须重新定义“+”运算符,这种重新定义的过程成为运算符的重载。系统自动识别数据类型5classA{floatx,y;public:A(floata=0,floatb=0){x=a;y=b;}}voidmain(void){Aa(2,3),b(3,4),c;c=a+b;}两对象不能使用3、+,必须重新定义+运算符重载就是赋予已有的运算符多重含义。C++通过重新定义运算符,使它能够用于特定类的对象执行特定的功能6运算符的重载从另一个方面体现了OOP技术的多态性,且同一运算符根据不同的运算对象可以完成不同的操作。为了重载运算符,必须定义一个函数,并告诉编译器,遇到这个重载运算符就调用该函数,由这个函数来完成该运算符应该完成的操作。这种函数称为运算符重载函数,它通常是类的成员函数或者是友元函数。运算符的操作数通常也应该是类的对象。7重载为类的成员函数格式如下:<类名>operator<运算符>(<参数表>){函数体}Aoperator+(A&);//重载了类A的“+”运算符其中:4、operator是定义运算符重载函数的关键字,它与其后的运算符一起构成函数名。返回类型运算的对象关键字函数名运算的对象8classA{inti;public:A(inta=0){i=a;}voidShow(void){cout<<"i="<5、完成了加法运算用和作对象调用函数9classA{inti;public:A(inta=0){i=a;}voidShow(void){cout<<"i="<6、当于a3=a1.operator+(a2)10重载运算符与一般函数的比较:相同:1)均为类的成员函数;2)实现同一功能voidAddA(A&a,A&b){i=a.i+b.i;}Aoperator+(A&a){At;t.i=i+a.i;returnt;}a3=a1+a2;a3.AddA(a1,a2);返回值函数名形参列表由对象a3调用函数调用:返回值函数名形参函数调用:a3=a1.operator+(a2);由对象a1调用11Aoperator+(A&a){At;t.i=i+a.i;returnt;}a3=a1+a2;返回值函数名形参函数调用:a3=a1.operator+(a2);由对象a7、1调用总结:重新定义运算符,由左操作符调用右操作符。最后将函数返回值赋给运算结果的对象。12classA{inti;public:A(inta=0){i=a;}voidShow(void){cout<<"i="<
2、)sum=a+b;floatadd,x=3.2,y=2.5;(float)=(float)+(float)add=x+y;charstr[4],c1[2]="a",c2[2]="b";(char*)=(char*)+(char*)str=c1+c2;编译系统中的运算符“+”本身不能做这种运算,若使上式可以运算,必须重新定义“+”运算符,这种重新定义的过程成为运算符的重载。系统自动识别数据类型5classA{floatx,y;public:A(floata=0,floatb=0){x=a;y=b;}}voidmain(void){Aa(2,3),b(3,4),c;c=a+b;}两对象不能使用
3、+,必须重新定义+运算符重载就是赋予已有的运算符多重含义。C++通过重新定义运算符,使它能够用于特定类的对象执行特定的功能6运算符的重载从另一个方面体现了OOP技术的多态性,且同一运算符根据不同的运算对象可以完成不同的操作。为了重载运算符,必须定义一个函数,并告诉编译器,遇到这个重载运算符就调用该函数,由这个函数来完成该运算符应该完成的操作。这种函数称为运算符重载函数,它通常是类的成员函数或者是友元函数。运算符的操作数通常也应该是类的对象。7重载为类的成员函数格式如下:<类名>operator<运算符>(<参数表>){函数体}Aoperator+(A&);//重载了类A的“+”运算符其中:
4、operator是定义运算符重载函数的关键字,它与其后的运算符一起构成函数名。返回类型运算的对象关键字函数名运算的对象8classA{inti;public:A(inta=0){i=a;}voidShow(void){cout<<"i="<
5、完成了加法运算用和作对象调用函数9classA{inti;public:A(inta=0){i=a;}voidShow(void){cout<<"i="<
6、当于a3=a1.operator+(a2)10重载运算符与一般函数的比较:相同:1)均为类的成员函数;2)实现同一功能voidAddA(A&a,A&b){i=a.i+b.i;}Aoperator+(A&a){At;t.i=i+a.i;returnt;}a3=a1+a2;a3.AddA(a1,a2);返回值函数名形参列表由对象a3调用函数调用:返回值函数名形参函数调用:a3=a1.operator+(a2);由对象a1调用11Aoperator+(A&a){At;t.i=i+a.i;returnt;}a3=a1+a2;返回值函数名形参函数调用:a3=a1.operator+(a2);由对象a
7、1调用总结:重新定义运算符,由左操作符调用右操作符。最后将函数返回值赋给运算结果的对象。12classA{inti;public:A(inta=0){i=a;}voidShow(void){cout<<"i="<
此文档下载收益归作者所有