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