1、关系操作符(==、!=、<、<=、>、>=)
2、最好相互联系起来进行重载,让一个操作符调用另一个操作符
3、代码示例:
class Sales_item {
friend bool operator==(const Sales_item&, const Sales_item&);
public:
Sales_item(const std::string &book, unsigned units, double amount):
isbn(book), units_sold(units), revenue(amount) { }
Sales_item(): units_sold(0), revenue(0.0) { }
public:
double avg_price() const;
bool same_isbn(const Sales_item &rhs) const
{ return isbn == rhs.isbn; }
private:
std::string isbn;
unsigned units_sold;
double revenue;
};
inline bool operator==(const Sales_item &lhs, const Sales_item &rhs)
{
return lhs.units_sold == rhs.units_sold &&
lhs.revenue == rhs.revenue &&
lhs.same_isbn(rhs);
}
inline bool operator!=(const Sales_item &lhs, const Sales_item &rhs)
{
return !(lhs == rhs);
}