资源描述:
《c++程序设计简明教程2eppt 第6章运算符重载》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章C++运算符的重载运算符是一些系统预定义的函数名称即用一些特定的符号表示各种运算每个运算符对运算数据都有一定要求。例如:“+”运算符只能对int、double等类型进行加法运算。运算符重载是让运算符能够对新定义的数据类型进行运算。1运算符重载含义例如:dt是date类对象,语句dt++错误。因为date类是新数据类型,其中没有定义“++”运算符。classdate{intmo,da,yr;public:date(intm,intd,inty){mo=m;da=d;yr=y;}};voidmain(){datedt(1,2,99)
2、;dt++;//错误语句}2C++运算符重载注意事项(1)一般来说,不改变运算符原有含义,只让它能够对新的数据类型进行计算。例如,重载“+”运算符后,它的功能还是进行加法运算。(2)重载运算符时,不能改变运算符原有的优先级别,也不能改变运算符需要的操作数的数目。(3)有些运算符不能进行重载。如“.”类成员运算符、“*”类指向运算符、“::”类作用域分解运算符、“?:”条件运算运算符。(4)不能人为定义新的运算符,只能使用系统提供的原有运算符。3二元算术运算符重载为类的成员函数可以将运算符重载为类的成员函数。实现运算符功能的成员函数称成
3、员运算符函数或运算符函数。在类中定义运算符函数时应注意以下问题:(1)对于一元运算符函数,用友元函数重载运算符时,需要声明一个形式参数。若用成员函数重载运算符时,则不能再声明形式参数,这个形式参数由成员函数的this指针提供。(2)对于二元运算符函数,用友元函数重载运算符时,需要声明二个形式参数。若用成员函数重载运算符时,则需要声明一个形式参数,这个形式参数表示运算符的右操作数,左操作数由成员函数的this指针提供。4程序6.1成员运算符函数举例日期类date重载“+”运算符,实现日期加上一个天数,得到新日期。staticintdys
4、[]={31,28,31,30,31,30,31,31,30,31,30,31};classdate{intmo,da,yr;public:date(intm,intd,inty){mo=m;da=d;yr=y;}voiddisplay(){cout<dys[dt.mo-1]){day-=dys[dt.mo-1];if(++dt.mo==13){dt.mo=1
5、;dt.yr++;}}dt.da=day;returndt;};voidmain(){dateolddate(2,20,99);datenewdate;newdate=olddate+21;newdate.display();}程序输出结果:3/13/995重载为类的友元函数程序6.2用友元函数重载运算符举例。staticintdys[]={31,28,31,30,31,30,31,31,30,31,30,31};classdate{intmo,da,yr;public:date(intm,intd,inty){mo=m;da=d;y
6、r=y;}voiddisplay(){cout<dys[dt.mo-1]){day-=dys[dt.mo-1];if(++dt.mo==13){dt.mo=1;dt.yr++;}}dt.da=day;returndt;}};dateoperator+(intday,date&dt){dt=dt+day;returndt
7、;}voidmain(){dateolddate(2,20,99);datenewdate;newdate=21+olddate;newdate.display();}程序输出结果:3/13/996关系运算符重载程序重载关系运算符“<”举例。classdate{intmo,da,yr;public:date(intm,intd,inty){mo=m;da=d;yr=y;}voiddisplay(){cout<8、urndt1.yr