如何使类的函数默认

How to make a class's function default

本文关键字:默认 函数 何使类      更新时间:2023-10-16

示例代码:

class Sum{
    public:
        void value(int val){_v = val;}
        int add(int val){return _v + val;}
    private:
        int _v;
};
Sum sum;
sum.value(5);
int myResult = sum.add(10);

是否可以将sum.add(10)设为默认值,以便我可以得到相同的结果,如下所示:

int myArea = sum(10);

(我怀疑题目不对,也许是我找不到解决方案的原因。随意编辑。

是的,你可以。 您可以做的是重载类的operator()以将其转换为函子。 您可以添加

int operator()(int val) { return add(val); }

对班级来说,现在sum(some_value)sum.add(some_value)是一回事

这就是函数调用运算符的具体用途。

class Sum{
public:
    void value(int val){ _v = val; }
    int add(int val) const{ return _v + val; }
    // Function call operator
    int operator()(int val) const {
        return add(val);
    }
private:
    int _v;
};
int main()
{
    Sum sum;
    sum.value(5);
    // Calls the function call operator
    int myResult = sum(10);
}