美文网首页
1.函数对象基本使用

1.函数对象基本使用

作者: lxr_ | 来源:发表于2021-04-26 10:11 被阅读0次
    #include<iostream>
    using namespace std;
    
    //概念:
    //重载 函数调用操作符 的类,其对象称为函数对象
    //函数对象使用重载的()时,行为类似函数调用,也叫仿函数
    
    //本质
    //函数对象(仿函数)是一个类,不是一个函数
    
    //函数对象使用:
    //函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值
    //函数对象超出普通函数的概念,函数对象可以有自己的状态
    //函数对象可以作为参数传递
    
    class MyAdd
    {
    public:
        int operator()(int v1, int v2)
        {
            return v1 + v2;
        }
    
    private:
    
    };
    //函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值
    void test01()
    {
        MyAdd myAdd;
        cout << myAdd(1, 2) << endl;
    }
    
    //函数对象超出普通函数的概念,函数对象可以有自己的状态
    class MyPrint
    {
    public:
        MyPrint()
        {
            this->count = 0;
        }
        void operator()(string test)
        {
            cout << test << endl;
    
            this->count++;
        }
    
        int count;//内部自己的状态
    };
    void test02()
    {
        MyPrint myPrint;
    
        myPrint("Hello");
        myPrint("Hello");
        myPrint("Hello");
        myPrint("Hello");
    
        cout << "MyPrint调用次数:" << myPrint.count << endl;
    }
    
    //函数对象可以作为参数传递
    void doPrint(MyPrint& mp,string test)
    {
        mp(test);
    }
    void test03()
    {
        MyPrint myPrint;
        doPrint(myPrint, "xian");
    }
    
    int main()
    {
        test01();
    
        tetst02();
    
        test03();
    
        system("pause");
        return 0;
    }
    

    相关文章

      网友评论

          本文标题:1.函数对象基本使用

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