// 函数对象
// 仿函数: 一元，二元仿函数
#include <iostream>

using namespace std;

// 一元仿函数
class A
{
public:
    A(int n) : n(n) {}
    int n;
    // 重载 operator() 运算符，只要调用 A 对象的 (int x) ，就会给对象的对应成员对象加一个 x
    A &operator()(int i)
    {
        this->n += i;
        return *this;
    }
};

void print(A a, int n) // A a = A(30)
{
    a(n);
    cout << "a.n = " << a.n << endl;
}

int main()
{
    // 打印 a 对象的值加额外的值的结果
    print(A(20), 3); // A(20) 会创建一个匿名对象

    return 0;
}
