我是用户定义的比较运算符的新手。我正在读一本书,其中提到了以下例子:
struct P {
int x, y;
bool operator<(const P &p) {
if (x != p.x)
return x < p.x;
else
return y < p.y; }
};我想了解bool operator<(const P &p)。特别是,我理解bool是操作符的返回类型,即返回值为true或false。
但是我很困惑,<在operator<中的意义是什么,以及这个操作符实际上是如何工作的?比较的是什么价值?
发布于 2017-10-12 01:52:06
P a, b;
bool ret = a < b;实际上是:
P a, b;
bool ret = a.operator<(b); // And < in operator<: x.operator<(p.x)这能帮你更好地理解吗?
发布于 2017-10-12 00:45:12
所以你有一个有两个整数的结构。上面的代码所表示的是,如果结构中的x (也称为" this ")不等于传入(p)的结构中的x,那么在x和p's x之间做一个规则的比较,如果它们相等,那么将它的Y与p的y进行比较。
"operator<“中"<”的意义在于让编译器知道您正在重载"<“操作符,允许您使用它与类型P的结构进行比较。如果您不为自定义类型重载<运算符,则不能使用它来比较其中的两个对象。
https://stackoverflow.com/questions/46699637
复制相似问题