- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
运算符重载2012
运算符重载的概念; C++中很多运算符已经具备了重载功能,例如我们非常熟悉的加法运算符“+”,
它既可以实现两个整数的相加:3+4;
也可以实现两个实数的相加:3.3+4.4
表面上看起来都是两个数相加,但系统内部对它们的操作是完全不同的,但由于C++已经对运算符“+”进行了重载,所以“+”就能适用于整型、实型等数据的计算。
实际上复数在数学上也有:+运算,而系统并没有提供这种运算。;设计复数类
class Complex
{ public:
Complex() //构造函数
{ m_real=0;
m_imag=0;
}
Complex(double r,double i) //构造函数重载
{ m_real=r;
m_imag=i; }
Complex ComplexAdd(Complex c2)
{ Complex c;
c.m_real=m_real+c2.m_real;
c.m_imag=m_imag+c2.m_imag;
return c;
}
void Display()
{cout(m_real,m_imagi)endl;}
friend Complex ComplexMinus(Complexc1,Complex c2);
private:
double m_real;
double m_imag; };
;设计类外的函数实现两个复数相减
Complex ComplexMinus(Complex c1,Complex c2)
{ Complex c;
c.m_real=c1.m_real-c2.m_real;
c.m_imag=c1.m_imag-c2.m_imag;
return c;}
设计主函数进行类驱动
int main()
{
Complex c1(1,2),c2(3,4),c3,c4;
c3=c1.ComplexAdd(c2);
c4=ComplexMinus(c1,c2);
coutc1=;
c1.Display ();
coutc2=;
c2.Display ();
coutc3=c1+c2=;
c3.Display();
coutc4=c1-c2=;
c4.Display();
return 0;}
; 例题中成员函数ComplexAdd()和友元函ComplexMinus()分别实现了两个复数的加法和减法计算,即用函数实现对对象的加减运算。成员函数ComplexAdd()只有一个参数,并且需要被某个对象调用,它实现的是这个对象和参数的加法计算;友元函数ComplexMinus()有两个参数,不需要对象调用,它实现的是两个参数的减法计算。那么我们能不能直接用运算符对对象实行运算呢?
如
c3=c1+c2;
c4=c1-c2;
直接用加号、减号两个运算符对对象进行计算。事实上我们只需要对加号、减号两个运算符进行重载就能够实现。; 运算符重载的方法是定义一个重载运算符的函数,这个函数的原型为:
类型 operator运算符名称(形参表);
想要重载哪个运算符就以operator加上这个运算符为函数名定义函数,函数内部对运算符实现重载操作,根据需要返回适当的数据。在程序中若使用这个运算符的重载计算功能,系统会自动去调用该重载函数,以实现相应的计算。如定义函数
“Complex operator+(Complex c1,Complex c2);”
之后,在程序中可以使用c1+c2计算(假设c1和c2是Complex类的对象),这时系统自动调用operator+函数以实现两个复数相加的功能。; 而且可以定义多个operator+()函数,实现对不同类型对象的加法计算,因此,运算符重载本质上就是函数重载,只不过是函数名和函数调用方式比较特殊而已。
运算符重载函数可以定义为类的成员函数,也可以定义为非成员函数,为了方便,非成员函数一般采用友元函数形式。;class Complex
{public:
Complex()
{ m_real=0;
m_imag=0; }
Complex(double r,double i)
{ m_real=r;
m_imag=i; }
Complex o
您可能关注的文档
- 浙江省宁波市“十校”2017届高三9月联考政治.doc.docx
- 浙江省慈溪市云龙中学2014~2015学年高一下学期期中联考语文试题 Word版含答案.doc
- 浙江省嘉兴市第一中学2016-2017学年高二上学期期中考试地理试题.doc
- 浙江省杭州地区四校2017届高三上学期联考历史试题.doc.docx
- 浙江省杭州市2016年高三二模语文.doc
- 浙江省效实中学2015届高三政治上学期期中试题.doc
- 运动训练管理学第五章.ppt
- 浙江省建人高复2017届高三上学期第二次月考 历史.doc.docx
- 浙江省杭州市七县(市、区)2016-2017学年高一上学期期末考试语文试题 Word版含答案.doc
- 浙江省杭州市七县(市、区)2016-2017学年高一上学期期末考试语文试题含答案.doc
最近下载
- 2024年黑龙江省高考英语试卷(含答案解析)+听力音频.docx
- GB50016-2014 建筑设计防火规范(2018版).docx
- 第一单元 第一、二、三课 木材基础知识、度量和画线、锯切课件 云南教育出版社劳技八年级下册.pptx
- 2024年安全生产标准化培训.pptx VIP
- JT_T 1218.4-2024 城市轨道交通运营设备维修与更新技术规范 第4部分:轨道.pdf
- 常用通假字大全.docx
- gb2726-2024熟肉制品卫生标准.docx
- 《椒个朋友》幼儿园小班讲课PPT课件.pptx VIP
- e同策上海嘉定新城西尚海金郡余房天攻坚营销计划.pptx VIP
- 预测之书(识别版)_1-100.pdf VIP
文档评论(0)