[英]What is the difference between object.operator bool() and (bool) object?
[英]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 ++不能那樣工作。 您需要更改使用運算符的上下文,而不僅僅是更改您的類已重載的運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.