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

时间:2019-07-27 19:16:59

标签: c++

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

我尝试将<替换为(),但抛出错误。

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

({hello是一个结构)

1 个答案:

答案 0 :(得分:1)

operator()()是我所说的“函数运算符”。 It makes the object behave like a function would,从某种意义上说,如果我重载它,可以使用与函数相同的语法:

class foo {
    bool operator()() {
       //...
   }
   // ...
};

// later...
bool myBool = myFoo();

如您所见,它的作用就像一个函数。

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

class foo {
    bool operator<(const foo& otherFoo) const {
       //...
   }
   // ...
};

// later...
if(myFoo1 < myFoo2) {
    //...
}


编辑:

  

我尝试将<替换为(),但引发了错误

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