首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UserDefined比较算子(operator>,operator<等)

UserDefined比较算子(operator>,operator<等)
EN

Stack Overflow用户
提问于 2017-10-12 00:40:59
回答 2查看 324关注 0票数 0

我是用户定义的比较运算符的新手。我正在读一本书,其中提到了以下例子:

代码语言:javascript
复制
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<中的意义是什么,以及这个操作符实际上是如何工作的?比较的是什么价值?

EN

回答 2

Stack Overflow用户

发布于 2017-10-12 01:52:06

代码语言:javascript
复制
P a, b;
bool ret = a < b;

实际上是:

代码语言:javascript
复制
P a, b;
bool ret = a.operator<(b);  // And < in operator<:  x.operator<(p.x)

这能帮你更好地理解吗?

票数 1
EN

Stack Overflow用户

发布于 2017-10-12 00:45:12

所以你有一个有两个整数的结构。上面的代码所表示的是,如果结构中的x (也称为" this ")不等于传入(p)的结构中的x,那么在x和p's x之间做一个规则的比较,如果它们相等,那么将它的Y与p的y进行比较。

"operator<“中"<”的意义在于让编译器知道您正在重载"<“操作符,允许您使用它与类型P的结构进行比较。如果您不为自定义类型重载<运算符,则不能使用它来比较其中的两个对象。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46699637

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档