C++_29_仿函数

仿函数

 

/**-----------------------------------仿函数---------------------------------------------*/
#include<iostream>
using namespace std;

class MyClass
{
public:
    //-------普通成员函数定义
    int my_add(int x, int y) {          
    return x + y;
    }
    //-------仿函数定义
    int operator()(int x, int y) {      //第一( )是重载的符号;第二( )是标明要进行传参;
        return x + y;
    }
private:
};

void test01()
{
    MyClass dx;

    //普通函数调用用法---------------------------------
    cout << dx.my_add(20,95) << endl;            //输出1

    //operator()直接看成是一个函数名 -- 仿函数用法
    cout << dx.operator()(85, 96) << endl;        //输出2

//operator()重载和仿函数用法-----------------------
    //优化:对象dx直接和( )结合,就会自动寻找( )运算符,当前前提是类中又operator()函数的定义
    cout << dx(25, 95) << endl;                    //输出3
    //这里dx是对象名,不是函数,本质是输出2,触发()函数重载
    //但是从外形上看起来像是函数,这样的用法叫做“仿函数”

    cout << MyClass()(85, 95) << endl; 
    //直接使用类名竟然也可以————匿名对象,实际上也是对象
    //(一次性的,执行一次后就没了)
    //记得使用类名——2个括号哈!
}

int main()
{
    test01();
    return 0;
}

 

posted @ 2023-12-04 00:18  尘落曦枫  阅读(15)  评论(0)    收藏  举报