【C/C++】仿函数

  • 函数调用运算符 () 也可以重载
  • 由于重载后使用的方式非常像函数的调用,因此称为仿函数
  • 仿函数没有固定写法,非常灵活

示例:

c 复制代码
#include <iostream>
#include <string>
using namespace std;


class MyPrint
{
public:
	//重载的运算符是"()",(string text)是参数列表。
	void operator()(string text)
	{
		cout << text << endl;
	}

};
void test01()
{
	//重载的()操作符 也称为仿函数
	MyPrint myFunc;
	myFunc("hello world");
}


class MyAdd
{
public:
	//重载的运算符是"()",(int v1, int v2)是参数列表。
	int operator()(int v1, int v2)
	{
		return v1 + v2;
	}
};

void test02()
{
	MyAdd add;
	int ret = add(10, 10);
	cout << "ret = " << ret << endl;

	//MyAdd()是匿名对象,当前行执行完,立即被释放。
	cout << "MyAdd()(100,100) = " << MyAdd()(100, 100) << endl;
}

int main() {

	test01();
	test02();

	system("pause");

	return 0;
}

由于使用起来非常类似于函数的调用,因此称为仿函数。

相关推荐
楼台的春风2 小时前
【STM32 基于PID的闭环电机控制系统】
c语言·stm32·单片机·嵌入式硬件·mcu·物联网·算法
free-elcmacom2 小时前
C语言番外篇(3)------------>break、continue
c语言·开发语言
EnigmaCoder2 小时前
单链表:数据结构中的灵活“链条”
c语言·数据结构·学习
柠石榴3 小时前
【练习】【类似于子集问题】力扣491. 非递减子序列/递增子序列
c++·算法·leetcode·回溯
Ronin-Lotus3 小时前
程序代码篇---C/C++中的变量存储位置
c语言·c++···静态区·文字常量区·变量存储位置
Abdullah al-Sa3 小时前
Docker教程(喂饭级!)
c++·人工智能·docker·容器
进击的_鹏3 小时前
【C++】list 链表的使用+模拟实现
开发语言·c++·链表
C语言扫地僧4 小时前
RPC 框架项目剖析
c++·网络协议·学习·rpc
L_09074 小时前
【C】队列与栈的相互转换
c语言·开发语言·数据结构
水月梦镜花5 小时前
数据结构:基数排序(c++实现)
开发语言·数据结构·c++