欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

C++STL笔记十二:STL函数对象一

时间:2023-05-29
函数对象概念:

重载函数调用操作符的类,其对象常称为函数对象。函数对象使用重载的()时,行为类似函数调用,也叫做仿函数。本质:

函数对象(仿函数)是一个类,不是一个函数。

特点:

函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值。

class MyAdd{public:int operator()(int v1, int v2){return v1 + v2;}};// 1、函数调用在使用时,可以像普通函数那样调用,可以有参数,可以有返回值。void test01(){MyAdd myAdd;cout << myAdd(10, 11) << endl;}

函数对象超出普通函数的概念,函数对象可以有自己的函数状态。

// 2、函数对象超出普通函数的概念,函数对象可以有自己的状态。class MyPrint{public:// 构造函数:MyPrint(){this->count = 0;}void operator()(string str){// dosomething.cout << str << endl;this->count++;cout << "这个函数被调用了:" << this->count << "次!" << endl;}private:int count; // 把字段放在public访问调用也可以。};void test02(){MyPrint myPrint;myPrint("hello World");myPrint("hello World");myPrint("hello World");}

hello World这个函数被调用了:1次!hello World这个函数被调用了:2次!hello World这个函数被调用了:3次!

函数对象可以作为参数传递。

void doPrint(MyPrint& mp, string str){mp(str);}void test03(){MyPrint myPrint;doPrint(myPrint, "函数对象作为参数被传入函数中了。");}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。