"bool operator()"和"bool operator <"有什么区别?

What's the difference between' bool operator()' and 'bool operator <'?

本文关键字:operator bool 什么 区别 lt      更新时间:2023-10-16

我试图制作一个集合的对象,当我在StackOverflow中搜索时,我发现了一个有效的建议:bool operator<(.....)。这是什么意思?它与bool operator ()有何不同?

我尝试用()替换<,但它抛出了一个错误。

bool operator<(const hello &p1) const{}

(hello是结构体(

operator()()就是我所说的"函数运算符"。它使对象的行为像函数一样,从某种意义上说,如果我重载它,我可以使用与函数相同的语法:

class foo {
    bool operator()() {
       //...
   }
   // ...
};
// later...
bool myBool = myFoo();

如您所见,它的作用类似于函数。

另一方面,operator<()是一个比较运算符。它允许我在比较上下文中使用我的foo,最常见的是在if语句中:

class foo {
    bool operator<(const foo& otherFoo) const {
       //...
   }
   // ...
};
// later...
if(myFoo1 < myFoo2) {
    //...
}

编辑:

我尝试用 (( 替换<,但它抛出了一个错误

如果不知道您尝试使用它们的上下文,则很难回答原因,但很高兴知道这两者不仅不同,而且通常在非常不同的上下文中使用。您不能只是将<更改为()并期望它正常工作。C++不是那样工作的。您需要更改使用运算符的上下文,而不仅仅是您的类重载的运算符。