- 0
- 0
- 约1.85万字
- 约 94页
- 2026-01-30 发布于广东
- 举报
11.1运算符重载的方法
11.1.1 运算符重载函数作为友元函数在10.7节创建的Fraction类定义了友元函数,实现了两个分数的相加运算:Fractionadd(constFraction&f1,constFraction&f2)本节将此函数更改为运算符重载函数,也将其设计成友元函数。该友元函数的参数个数、参数类型与运算符的运算对象数、运算对象类型完全相同。运算符“+”的运算对象数为两个,那么重载函数的参数为两个,类型都是Fraction类型,返回值也是Fraction类型。运算符分数加法的重载函数在类中可以被声明为友元函数:friendFractionoperator+(constFraction&,constFraction&); //两个分数相加下一页返回
11.1运算符重载的方法
在类外定义该运算符重载函数://运算符重载函数,两个分数相加Fractionoperator+(constFraction&f1,constFraction&f2){intnume=f1.numerator?f2.denominator+f2.numerator?f1.numerator;intdeno=f1.denominator?f2.denominator;Fractionf3(nume,deno);f3.reduce();returnf3;}上一页下一页返回
11.1运算符重载的方法
如果增加分数比较运算(如大于、小于、等于等),那么需要在Fraction类中增加比较运算符(、、==等)的重载函数。作为友元函数的比较运算符,重载函数的参数也有两个,参数类型为Fraction,返回类型为bool型。以重载比较运算符“”为例,在类中将其声明为友元函数:friendbooloperator(constFraction&,constFraction&);上一页下一页返回
11.1运算符重载的方法
在类外定义该运算符重载函数://“”运算符重载booloperator(constFraction&f1,constFraction&f2){returnf1.numerator?f2.denominatorf2.numerator?f1.denominator;}上一页下一页返回
11.1运算符重载的方法
前面的运算符是二元运算符,具有两个运算对象。一元运算符的运算对象为一个,如取负值运算符“-”。因此,在Fraction类中,取负值运算符“-”重载函数的参数为一个,类型为Fraction,返回值类型也为Fraction。在类中将其声明为友元函数:friendFractionoperator-(constFraction&);上一页下一页返回
11.1运算符重载的方法
在类外定义该运算符重载函数://取负值运算符重载Fractionoperator-(constFraction&f){returnFraction(-f.numerator,f.denominator);}上一页下一页返回
11.1运算符重载的方法
在测试代码中,可以测试上述运算符重载函数的有效性。程序的代码如下:Fractionf1(4,8),f2(6,9);cout(f1f2)endl;Fractionf3;f3=f1+f2;Fractionf4;f4=-f1;f1.disp();f2.disp();f3.disp();f4.disp();【练习】将10.7节创建的Fraction类分数的相加、相减、相乘与相除运算替换为友元运算符重载函数,并编写测试代码。上一页下一页返回
11.1运算符重载的方法
11.1.2 运算符重载函数作为成员函数友元是C++提供的一种破坏数据封装和数据隐藏的机制。要想增强数据的安全性和完整性,那么将运算符重载函数定义为类成员函数是一种更好的选择。如果将重载函数设计成类的成员函数,那么形参个数比运算符的运算对象少1个。原因是类成员函数有一个隐含的参数this。C++规定隐含参数this是运算符的第一个参数。若把一个二元运算符重载为成员函数,则该成员函数的参数只有一个。若把一个一元运算符重载为成员函数,则该成员函数没有参数。本节以在Fraction类重载运算符“?”为例来说明运算
您可能关注的文档
- 《汽车文化1》_3-1汽车设计与制造.ppt
- 《汽车文化1》_8-3-文明的行车礼仪.ppt
- 《汽车材料》_项目四 汽车典型机械零件.ppt
- 《汽车文化1》_6-1-欧美著名汽车公司及品牌介绍.ppt
- 《工业控制网络》_数据通信基础.ppt
- 《汽车材料》_项目三 汽车机械传动装置.ppt
- 《汽车材料》_项目二 汽车常见机构.ppt
- 《汽车文化1》_3-2汽车造型与色彩.ppt
- 《PLC控制系统》_项目一.pptx
- 《汽车机械工程基础》_学习领域5—汽车轴系零部件2.ppt
- (正式版)DB33∕T 2574-2023 《 数字乡村建设规范 》.pdf
- (正式版)DB33∕T 2554-2022 《“GM2D”进口商品数据元 》.pdf
- (正式版)DB33∕T 2573-2023 《 助残护理员照护服务规范 》.pdf
- (正式版)DB33∕T 2542-2022 《餐饮计量规范 》.pdf
- (正式版)DB33∕T 2558.1-2022 《林下套种菌药生产技术规程 第1部分:大球盖菇》.pdf
- (正式版)DB33∕T 2558.3-2022 《林下套种菌药生产技术规程 第3部分:羊肚菌 》.pdf
- (正式版)DB33∕T 2575-2023 《 野生猛禽和涉禽安全救护技术规程 》.pdf
- (正式版)DB33∕T 2544-2022 《森林人家建设规范》.pdf
- (正式版)DB33∕T 310010-2021 《沿海防护林生态效益监测与评估技术规程》.pdf
- (正式版)DB33∕T 3004.1-2015 《农村厕所建设和服务规范 第1部分:农村改厕管理规范 》.pdf
原创力文档

文档评论(0)