"bool operator()"和"bool operator <"有什么区别?
What's the difference between' bool operator()' and 'bool operator <'?
我试图制作一个集合的对象,当我在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++不是那样工作的。您需要更改使用运算符的上下文,而不仅仅是您的类重载的运算符。
相关文章:
- 写入向量<向量<bool>>
- 为什么 std::optional::operator=(U&&) 要求你是非标量类型?
- 'operator='已弃用:改用 QDir::setPath()
- 过载'operator new'如何导致无限循环?
- 让bool方法返回其他整数
- 如何在 std::vector 中找到<bool>哪些索引是真的?
- 与'operator='不匹配(操作数类型'String'且"void")
- SegFault 同时使用 std::string::operator+= 和函数作为参数
- Arduino-C++ bool 不会从 false 变为 true
- 处理"no operator found"
- 为什么在这种情况下,bool 类型的输出等于 0?
- 显式 std::exception_ptr 转换为 bool 不存在.VS2010 错误?
- 如何编写 operator= 用于使用虚拟方法与非平凡成员的匿名联合
- 如果类对象需要在 C++ 中转换为 int,为什么会调用 "operator bool()"?
- "bool operator()"和"bool operator <"有什么区别?
- 是为已从中移动()的unique_ptr定义的“unique_ptr::operator bool()”
- 错误:传入'const T'& # 39;这个# 39;bool T::operator<(T)'
- 'bool operator<(Contact&)' 必须恰好取两个参数
- 为什么没有 bool std::operator==(T1* a, std::shared_ptr b) 的重载<T2>?
- 我不断收到一个错误:"no operator >> matches thees operands" int 和 bool 变量。在>>运算符过载