这个运算符()语法的作用是什么

What does this operator() syntax do?

本文关键字:作用 是什么 语法 运算符      更新时间:2023-10-16

在这段代码中http://drdobbs.com/cpp/184403774:

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_; }

我确信这是一些不同的语法,因为operator()应该是一个单词。此外,不能用不同的返回类型定义其中两个。

不,这是类型转换运算符。

您可以定义

operator type() const

作为允许强制转换为type的运算符。例如

class date {
public:
   operator time_t() const; // convert to time_t
};

operator()有不同的用途,它允许将类用作"函数",而

并非如此