14.3 算术和关系运算符
算术和关系运算符一般定义为非成员函数
算术运算符会计算两个运算对象并得到一个新值,新值通常是一个局部变量,然后返回局部变量的副本
Sales_data operator+(const Sales_data& lhs, const Sales_data& rhs) {
Sales_data sum = lhs;
sum += rhs; // 使用复合赋值
return sum;
}
14.3.1 相等运算符
bool operator==(const Sales_data& lhs, const Sales_data& rhs) {
return lhs.isbn() == rhs.isbn() && lhs.units_sold == rhs.units_sold && lhs.revenue == rhs.revenue;
}
bool operator!=(const Sales_data& lhs, const Sales_data& rhs) {
return !(lhs == rhs);
}
14.3.2 关系运算符
通常情况下,关系运算符应该
- 定义顺序关系
- 如果类同时也含有相等运算符,则关系运算符应该与其保持一致