美文网首页
C++中函数调用操作符的重载

C++中函数调用操作符的重载

作者: nethanhan | 来源:发表于2017-10-14 10:45 被阅读0次

    函数调用操作符的重载


    • 函数调用操作符(())
      • 只能通过类的成员函数重载
      • 可以定义不同参数的多个重载函数

    用法:

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

    相关文章

      网友评论

          本文标题:C++中函数调用操作符的重载

          本文链接:https://www.haomeiwen.com/subject/xgjxuxtx.html