簡體   English   中英

'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 ++不能那樣工作。 您需要更改使用運算符的上下文,而不僅僅是更改您的類已重載的運算符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM