文章目录
一、函数对象中存储状态
1、函数对象中存储状态简介
2、示例分析
二、函数对象作为参数传递时值传递问题
1、for_each 算法的 函数对象 参数是值传递
2、代码示例 - for_each...函数的 函数对象 参数在外部不保留状态
3、代码示例 - for_each 函数的 函数对象 返回值
一、函数对象中存储状态
1、函数对象中存储状态简介
在 C++ 语言中 , 函数对象 / 仿函数...普通函数 中 局部变量 在函数执行完成后 , 自动销毁 ;
函数对象 / 仿函数 的一个主要优势是它们可以拥有状态 , 而普通函数则不能 ;
这使得 " 函数对象 / 仿函数 " 在需要保持 某些数据或状态...在 多次函数调用 之间不变的情况下非常有用 ,
例如 : 在 STL 算法中 , 函数对象经常被用作 谓词 或 用于在容器的每个元素上执行某种操作的函数 , 由于它们可以存储状态 , 因此可以根据算法的需要进行定制...值传递 , 传递的 只是 函数对象副本 , 副本的 状态改变 不会影响到外部函数 ;
如果想要 保留上述 状态改变 , 则需要使用 函数对象 接收 for_each 的返回值 , 这个函数对象 保留了