C 面向对象程序设计(第二版)课件 6.2.4 运算符重载为类的友元函数_第1页
C 面向对象程序设计(第二版)课件 6.2.4 运算符重载为类的友元函数_第2页
C 面向对象程序设计(第二版)课件 6.2.4 运算符重载为类的友元函数_第3页
C 面向对象程序设计(第二版)课件 6.2.4 运算符重载为类的友元函数_第4页
C 面向对象程序设计(第二版)课件 6.2.4 运算符重载为类的友元函数_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

6.2.4运算符重载为类的友元函数在此输入您的封面副标题运算符重载为类的友元函数运算符重载函数作为类的友元函数时,是独立于类外的普通函数。运算符重载为类的友元函数,这样,它就可以访问该类中的任何数据成员。这时,运算符所需要的操作数都需要通过函数的参数表来传递,在参数表中形参从左到右的顺序就是运算符操作数的顺序。对于双目运算符D,如果要重载为类X的友元函数,实现表达式xobj1Dxobj2,则函数有两个形参,其中xobj1和xobj2是类X的对象,经过重载后,表达式xobj1Dxobj2相当于调用函数operatorD(xobj1,xobj2)。对于单目运算符的重载,后面会详细讲解运算符重载为类的友元函数将运算符重载函数定义为类的友元函数,其原型在类内部的声明格式和在类外定义友元运算符重载函数的格式如下:class类名{friend返回类型operator运算符(形参表);};在类外定义友元运算符重载函数的格式如下:返回类型operator运算符(形参表){函数体}运算符重载为类的友元函数#include<iostream>#include<stdlib.h>usingnamespacestd;classFranc{private:intnume;//分子intdeno;//分母public:Franc(){}Franc(intnu,intde){

if(de==0)exit(1);nume=nu;deno=de;}

friendFrancoperator+(Francf1,Francf2);friendbooloperator==(Francf1,Francf2);voidFranSimp();voiddisplay(){cout<<"("<<nume<<"/"<<deno<<")"<<endl;}};voidFranc::FranSimp()//化简为最简分数{//求x分数的分子和分母的最大公约数intm,n,r;m=nume;n=deno;r=m%n;while(r!=0){m=n;n=r;r=m%n;}if(n!=0){//化简为最简分式 nume/=n; deno/=n; } if(deno<0){//分母为负时处理 nume=-nume; deno=-deno; }}Francoperator+(Francf1,Francf2){Francf;f.nume=f1.nume*f2.deno+f2.nume*f1.deno;//计算结果分数的分子f.deno=f1.deno*f2.deno;//计算结果分数的分母f.FranSimp();//对结果进行简化处理returnf;//返回结果分数}booloperator==(Francf1,Francf2)//如果两个分数相等则返回true否则返回false{if(f1.nume*f2.deno==f2.nume*f1.deno)returntrue;elsereturnfalse;}intmain(){Francf1(5,6),f2(1,2),f3; //定义分数类对象cout<<"f1=";f1.display();cout<<"f2=";f2.display();

f3=f1+f2;//用重载运算符实现分数加法cout<<"f1+f2=";f3.display();if(f1==f2)cout<<"f1和f2相等"<<endl; //判断f1和f2是否相等elsecout<<"f1和f2不相等"<<endl;return0;}程序运行结果:f1=(5/6)f2=(1/2)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论