我试图制作一个集合的对象,当我在StackOverflow中进行搜索时,发现了一条可行的建议:bool operator<(.....)
。这是什么意思?它与bool operator ()
有何不同?
我尝试将<
替换为()
,但抛出错误。
bool operator<(const hello &p1) const{}
({hello
是一个结构)
答案 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 ++不能那样工作。您需要更改运算符使用的上下文,而不仅仅是更改类重载的运算符。