码迷,mamicode.com
首页 > 其他好文 > 详细

14.3. 算术操作符的重载

时间:2015-04-06 20:10:43      阅读:135      评论:0      收藏:0      [点我收藏+]

标签:

#include<iostream>
#include<string>
using namespace std;

class sales_item
{
	friend istream& operator>>(istream &,sales_item&);
	friend ostream& operator<<(ostream&,const sales_item&);

	friend inline bool operator==(const sales_item&,const sales_item&);
public:
	sales_item& operator+=(const sales_item&);



private:
	int a;
	string str;
};
sales_item operator+(const sales_item&,const sales_item&);

inline bool operator!=(const sales_item&,const sales_item&);

/*
一般而言,将算术和关系操作符定义为非成员函数
加法操作符并不改变操作符的状态,操作符是对 const 对象的引用;相反,
它产生并返回一个新的 Sales_item 对象,该对象初始化为 lhs 的副本
*/
//加法运算符的重载
sales_item operator+(const sales_item& lhs,const sales_item& rhs)
{
	sales_item temp(lhs);
	temp+=rhs;
	return temp;
}

/*
通常,C++ 中的类使用相等操作符表示对象是等价的。即,它们通常比较每
个数据成员,如果所有对应成员都相同,则认为两个对象相等。
•  如果类定义了 == 操作符,该操作符的含义是两个对象包含同样的数据。
•  如果类具有一个操作,能确定该类型的两个对象是否相等,通常将该函数
定义为 operator== 而不是创造命名函数。用户将习惯于用 == 来比较对
象,而且这样做比记住新名字更容易。 
•  如果类定义了 operator==,它也应该定义 operator!=。用户会期待如果
可以用某个操作符,则另一个也存在。 
•  相等和不操作符一般应该相互联系起来定义,让一个操作符完成比较对象
的实际工作,而另一个操作符只是调用前者。
*/
//==的重载函数体
inline bool operator==(const sales_item& rhs,const sales_item& lhs)
{
	return (rhs.a==lhs.a)&&(rhs.str==lhs.str);
}
//!=的重载函数体
inline bool operator!=(const sales_item& rhs,const sales_item& lhs)
{
	return !(rhs==lhs);
}

int main()
{
	ostream& os;
	os.

}

  

14.3. 算术操作符的重载

标签:

原文地址:http://www.cnblogs.com/yanliang12138/p/4396431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!