第14章 重载操作符与转换(3)
14.3 算术操作符和关系操作符
一般而言,将算术和关系操作符定义为非成员函数。
为了与内置操作符保持一致,加法返回一个右值,而不是一个引用。
friend Class1 operator+(const Class1 &c1, const Class1 &c2);
Class1 operator+(const Class1 &c1, const Class1 &c2)
{
Class1 c(100);
c.counter = c1.counter+c2.counter;
return c;
}
Class1 c1(200);
Class1 c2(300);
cout << c1 + c2 << endl;
既定义了算术操作符又定义了相关复合赋值操作符的类,一般应使用复合赋值实现算术操作符。
14.3.1 相等操作符
friend bool operator==(const Class1 &c1, const Class1 &c2);
inline bool operator==(const Class1 &c1, const Class1 &c2)
{
return c1.counter == c2.counter;
}
Class1 c1(200);
Class1 c2(300);
bool i = c1 == c2;
cout << i << endl;
定义了operator==的类更容易与标准库一起使用。有些算法,如find,默认使用==操作符,如果类定义了==,则这些算法可以无需任何特殊处理而用于该类类型。
14.3.2 关系操作符
关联容器以及某些算法,使用默认<操作符。一般而言,关系操作符,诸如相等操作符,应定义为非成员函数。
摘自 xufei96的专栏
补充:软件开发 , C++ ,