设为首页 加入收藏

TOP

C++读书笔记之 关系运算符重载 大于号> 小于号< 等于号== 重载 overload (一)
2015-11-21 01:20:14 来源: 作者: 【 】 浏览:9
Tags:读书 笔记 关系 运算 重载 大于 > 小于 < 等于 overload

public:
??????? static const double absError=0.0000001;
??????? static? bool IsEqual(double a, double b)
??????? {
??????????? if (a==b)
??????????????? return true;
??????????? if (fabs(a-b) ??????????????? return true;
??????????? return false;
??????? }

/**重载赋值运算符后 交换两个类的数据**/

??????? void swap(Distance& d)
??????? {
??????????? Distance temp;
??????????? temp=*this;
??????????? *this=d;
??????????? d=temp;
??????? }
??????
??????? /*** overloaded < operator 重载小于号 ***/
??????? bool operator <(const Distance& d)
??????? {
???????????? if((feet - d.feet ???????????? {
??????????????? return true;
???????????? }
???????????? return false;
??????? }
??????? /*** overloaded > operator? 重载大于号***/
??????? bool operator > (const Distance& d)
??????? {
???????????? if((feet -d.feet>absError)||(feet == d.feet && inches - d.inches>absError))
???????????? {
??????????????? return true;
???????????? }
???????????? return false;
??????? }
??????? /*** overloaded == operator 重载等于号 ***/
??????? bool operator ==(const Distance& d)
??????? {
???????????? if(IsEqual(feet,d.feet) && IsEqual(inches,d.inches))
???????????? {
??????????????? return true;
???????????? }
???????????? return false;

??????? }

?

?

?


[cpp]
#include ??
#include ??
using namespace std;?
?
class Distance?
{?
??? private:?
??????? double feet;???????????? // 0 to infinite??
??????? double inches;?
??? public:?
??????? static const double absError=0.0000001;?
??????? static? bool IsEqual(double a, double b)?
??????? {?
??????????? if (a==b)?
??????????????? return true;?
??????????? if (fabs(a-b) ??????????????? return true;?
??????????? return false;?
??????? }?
??????? // required constructors??
??????? Distance()?
??????? {?
???????????? feet = 0;?
???????????? inches = 0;?
??????? }?
??????? Distance(double f, double i)?
??????? {?
???????????? feet = f;?
???????????? inches = i;?
??????? }?
??????? /**重新设置数据**/?
??????? void set(double f, double i)?
??????? {?
???????????? feet = f;?
???????????? inches = i;?
??????? }?
??????? /**重载赋值运算符后 交换两个类的数据**/?
??????? void swap(Distance& d)?
??????? {?
??????????? Distance temp;?
??????????? temp=*this;?
??????????? *this=d;?
??????????? d=temp;?
??????? }?
??????? // method to display distance??
??????? void displayDistance()?
??????? {?
??????????? cout <<" Feet: " << feet << " Inches:" << inches < ??????? }?
??????? /*** overloaded minus (-) operator? ***/?
??????? Distance operator- ()?
??????? {?
???????????? feet = -feet;?
???????????? inches = -inches;?
???????????? return Distance(feet, inches);?
??????? }?
??????? /*** overloaded < operator 重载小于号 ***/?
??????? bool operator <(const Distance& d)?
??????? {?
???????????? if((feet - d.feet ???????????? {?
??????????????? return true;?
???????????? }?
???????????? return false;?
??????? }?
??????? /*** overloaded > operator? 重载大于号***/?
??????? bool operator > (const Distance& d)?
??????? {?
???????????? if((feet -d.feet>absError)||(feet == d.feet && inches - d.inches>absError))?
???????????? {?
??????????????? return true;?
???????????? }?
???????????? return false;?
??????? }?
??????? /*** overloaded == operator 重载等于号 ***/?
??????? bool operator ==(const Distance& d)?
??????? {?
???????????? if(IsEqual(feet,d.feet) && IsEqual(inches,d.inches))?
???????????? {?
??????????????? return true;?
???????????? }?
???????????? return false;?
??????? }?
?
};?
?
?
int main()?
{?
??? Distance D1(20.08,5.12 ), D2(20.13, 4.20);?
??? cout<<"before swap :\n";?
??? cout<<"D1:---->? ";?
??? D1.displayDistance();?
??? cout<<"D2:---->? ";?
??? D2.displayDistance();?
??? if( D1 < D2 )?
??? {?
????? cout << "D1 is less than D2 " << endl;?
??? }?
??? else?
??? {?
?????

首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇POJ 3071-Football(概率dp) 下一篇C/C++语言学习――内存分配管理

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: