22、不一樣的C++系列--函數調用操作符的重載

函數調用操作符的重載


  • 函數調用操作符(())
    • 只能通過類的成員函數重載
    • 可以定義不同參數的多個重載函數

用法:

Type operator () ()
{

    return Type;
}
  • 函數調用操作符的意義
    • 函數調用操作符(())是可重載的
    • 函數調用操作符只能通過類的成員函數重載
    • 函數調用操作符可以定義不同參數的多個重載函數
    • 函數對象用於在工程中取代函數指針

這裏舉個例子:

#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;
    }

    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;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章