网站大量收购闲置独家精品文档,联系QQ:2885784924

运算符重载2012.ppt

  1. 1、本文档共17页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档