34 lines
606 B
C++
34 lines
606 B
C++
|
// 函数对象
|
||
|
// 仿函数: 一元,二元仿函数
|
||
|
#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;
|
||
|
}
|