C++_29_仿函数

发布时间 2023-12-04 00:21:19作者: 尘落曦枫

仿函数

/**
* -------------仿函数
*/
#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;
}