- 1、本文档共49页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
对双目运算符,重载为成员函数时,仅一个参数,另一个被隐含;重载为友元函数时,有两个参数,没有隐含参数。 一般来说,单目运算符最好被重载为成员函数;对双目运算符最好被重载友元函数。 转换函数 转换函数就是在类中定义一个成员函数,其作用是将类转换为某种数据类型。 class A { float x, y; public: A(float a, float b){ x=a; y=b; } }; void main(void) { A a(2,3); coutaendl; } 错误!类的对象不能直接输出 利用转换函数将类A的对象a转换成某种数据类型 A float A :: operator float ( ) { return x+y; } A float 格式为: ClassName :: operator type( ) {.........} 类名 具体的转换算法 欲转换类型 关键字 转换算法自己定义 1. 转换函数必须是类的成员函数。 2. 转换函数的调用是隐含的,没有参数。 class A { int i; public:public: A(int a=0) { i=a; } void Show(void) { couti=iendl; } operator int( ){ return i; } }; void main(void) { A a1(10),a2(20); couta1endl; couta2endl; } class Complex{ float Real,Image; public: Complex(float real=0,float image=0) { Real=real; Image=image; } void Show(void) {coutReal=Real\tImage=Imageendl; } operator float(); //成员函数,定义类转换 Complex-float }; Complex::operator float () { return Real*Real+Image*Image;} void main(void) { Complex c(10,20); c.Show (); coutcendl;//可以直接输出c,因为已经进行类型转换 } * 第十三章 运算符重载 函数的重载 所谓函数的重载是指完成不同功能的函数可以具有相同的函数名。 C++的编译器是根据函数的实参来确定应该调用哪一个函数的。 int fun(int a, int b) { return a+b; } int fun (int a) { return a*a; } void main(void) { coutfun(3,5)endl; coutfun(5)endl; } 8 25 1、定义的重载函数必须具有不同的参数个数,或不同的参数类型。只有这样编译系统才有可能根据不同的参数去调用不同的重载函数。 2、仅返回值不同时,不能定义为重载函数。 int sum,a=3,b=2; (int)=(int) + (int) sum=a+b; float add, x=3.2, y=2.5; (float)=(float) + (float) add=x+y; char str[4], c1[2]=a, c2[2]=b; (char *)=(char *) + (char *) str=c1+c2; 编译系统中的运算符“+”本身不能做这种运算,若使上式可以运算,必须重新定义“+”运算符,这种重新定义的过程成为运算符的重载。 系统自动识别数据类型 class A { float x,y; public: A(float a=0, float b=0){ x=a; y=b; } } void main(void) { A a(2,3), b(3,4), c; c=a+b; } 两对象不能使用+,必须重新定义+ 运算符重载就是赋予已有的运算符多重含义。C++通过重新定义运算符,使它能够用于特定类的对象执行特定的功能 运算符的重载从另一个方面体现了OOP技术的多态性,且同一运算符根据不同的运算对象可以完成不同的操作。 为了重载运算符,必须定义一个函数,并告诉编译器,遇到这个重载运算符就调用该函数,由这个函数来完成该运算符应该完成的操作。这种函数称为运算符重载函数,它通常是类的成员函数或者是友元函数。运算符的操作数通常也应该是类的对象。 重载为类的成员
您可能关注的文档
最近下载
- 3.5.3 手卫生管理(Word版本).docx VIP
- 25、沈园二首教案.doc VIP
- 现场应急处置—典型事故现场应急处置.pptx
- 招标代理服务质量保障策略与措施.docx VIP
- 《中国民间故事》整本书阅读交流展示课ppt课件(完美版)-小学语文五年级必读书目快乐读书吧.pptx VIP
- 新时代中国特色社会主义理论与实践课件-2024年高教版研究生新中特教材.pdf VIP
- 10KV高压开关柜故障分析及处理.docx VIP
- 新22J06 楼梯 参考图集.docx VIP
- 消防应急响应.docx VIP
- 《水运工程标准施工监理招标文件》(JTS110-10-2012).pdf VIP
文档评论(0)