4
在這段代碼從http://drdobbs.com/cpp/184403774採取:這個operator()語法做了什麼?
template <class L, class R>
class MinResult {
L& lhs_;
R& rhs_;
public:
operator L&() { return lhs_ < rhs_ ? lhs_ : rhs_; } // <----
operator R&() { return lhs_ < rhs_ ? lhs_ : rhs_; } // <----
MinResult(L& lhs, R& rhs) : lhs_(lhs), rhs_(rhs) {}
};
什麼是上述努力的箭頭指向線做的代碼?
我是C++的初學者,我知道我們可以通過定義它來覆蓋/定義operator()
。
但後來不應該像這樣
L& operator() { return lhs_ < rhs_ ? lhs_ : rhs_; }
我相信這是一些differenct語法,因爲operator()
應該是一個詞來定義。另外,你不能用不同的返回類型定義它們中的兩個。
的情況下任何特別的原因,我們將強制轉換爲參考? – Lazer 2012-03-18 09:25:40
如果函數調用操作符不帶參數,則應將'type operator()const'寫爲'operator()const' – Nawaz 2012-03-18 09:44:18
或'type operator()()const'。 – 2012-03-18 09:49:15