35-函数对象分析-()操作符的重载

来源:互联网 发布:淘宝卖家怎么关闭订单 编辑:程序博客网 时间:2024/04/29 06:01

1、需求

这里写图片描述

#include <iostream>#include <string>using namespace std;int fib(){    static int a0 = 0;    static int a1 = 1;    int ret = a1;    a1 = a0 + a1;    a0 = ret;    return ret;}int main(){    for(int i=0; i<10; i++)    {        cout << fib() << endl;    }    cout << endl;    for(int i=0; i<5; i++)    {        cout << fib() << endl;    }    return 0;}1123581321345589144233377610

2、存在的问题

这里写图片描述

3、解决方案

这里写图片描述

4、函数对象

这里写图片描述

#include <iostream>#include <string>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 fib;    for(int i=0; i<10; i++)    {        cout << fib() << endl;//调用对象的()重载函数fib.operator();    }    cout << endl;    for(int i=0; i<5; i++)    {        cout << fib() << endl;    }    cout << endl;    Fib fib2(10);    for(int i=0; i<5; i++)    {        cout << fib2() << endl;    }    return 0;}11235813213455891442333776105589144233377

5、小结

这里写图片描述

阅读全文
0 0
原创粉丝点击