如果一个类将()运算符重载为成员函数,这个类就称为函数对象类,
这个类的对象就是函数对象。函数对象是一个对象,
但是使用的形式看起来像函数调用,实际上也执行了函数调用,
因而得名。
#include <iostream>
#include <string>
#include <sstream>
using namespace std;
class Fib
{
int a0;
int a1;
public:
Fib()
{
a0 = 0;
a1 = 1;
}
Fib(int n)
{
a0 = 0;
a1 = 1;
for(int i=2;i<=n;i++)
{
int t = a1;
a1 = a0 +a1;
a0 = t;
}
}
int operator ()()
{
int ret = a1;
a1 = a0 +a1;
a0 = ret;
return ret;
}
};
int main()
{
Fib fib0(5);
Fib fib1;
for(int i = 0;i<5;i++)
{
cout<<fib0()<<endl;
}
for(int i = 0;i<5;i++)
{
cout<<fib1()<<endl;
}
return 0;
}
C++-----函数对象
最新推荐文章于 2021-02-19 15:46:26 发布