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