UserDefined比较运算符(运算符>,运算符< etc)

时间:2017-10-12 00:41:00

标签: c++

我是Userdefined Comparison Operator的新手。我正在读一本书,其中提到了以下例子:

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是运算符的返回类型,即返回值为truefalse

但我很困惑,operator<&lt; 的意义是什么?这个运算符实际上是如何工作的?正在比较什么价值?

2 个答案:

答案 0 :(得分:1)

P a, b;
bool ret = a < b;

实际上是:

P a, b;
bool ret = a.operator<(b);  // And < in operator<:  x.operator<(p.x)

这有助于您更好地理解吗?

答案 1 :(得分:0)

所以你有一个包含两个整数的结构。 X和Y.上面的代码说的是你所在的结构中的X(也称为&#34; this&#34;)不等于传递给(p)的结构中的x在x和p的x之间做一个常规的比较。如果它们相等,则将其与y的比较y。

&#34;&lt;&#34;在&#34;运营商&lt;&#34;是让编译器知道你重载'&#34;&lt;&#34;运算符允许您使用它来比较P型结构。如果你不重载&lt;结构。自定义类型的运算符,您不能使用它来比较其中两个对象。