C++中的函数对象(仿函数) Dear 丶 2022-11-07 11:44 115阅读 0赞 # 函数对象(仿函数) # 在C++中,类可以重载函数调用操作符---->“()”,在实现了函数调用操作符的重载之后,这样的类所创建的对象可以像函数一样使用,所以我们称这样的类为函数对象或者也称为仿函数。 —函数对象有三个特征:— **1. 函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值** **2. 函数对象超出普通函数的概念,函数对象可以有自己的状态** **3. 函数对象可以作为参数传递** **代码示例:** #include <iostream> #include <string> using namespace std; //函数对象(仿函数) //*函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值 //* 函数对象超出普通函数的概念,函数对象可以有自己的状态 //* 函数对象可以作为参数传递 //1、函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值 class MyAdd { public: int operator()(int v1, int v2) { return v1 + v2; } }; void test01() { MyAdd myAdd; cout << myAdd(10, 10) << endl; } //2、函数对象超出普通函数的概念,函数对象可以有自己的状态 class MyPrint { public: MyPrint() { this->count = 0; } void operator()(string test) { cout << test << endl; count++; } int count;//内部自己状态 }; void test02() { MyPrint myPrint; myPrint("Hello world!!"); myPrint("Hello world!!"); myPrint("Hello world!!"); cout << "MyPrint调用次数为:" << myPrint.count << endl; } //3、函数对象可以作为参数传递 void doPrint(MyPrint & mp, string test) { mp(test); } void test03() { MyPrint myPrint; doPrint(myPrint, "Hello c++"); } int main() { // test01(); // test02(); test03(); system("pause"); return 0; } **总结:函数对象是一个类!!!!!!!**
还没有评论,来说两句吧...