【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;
}

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

相关推荐
小张成长计划..8 分钟前
【C++】20:set和map的理解和使用
c++
yyy(十一月限定版)14 分钟前
C语言——排序算法
c语言·开发语言·排序算法
曼巴UE533 分钟前
UE C++ 字符串编码转码
c++·ue5
青山是哪个青山42 分钟前
第三节:CMake 工程实践场景笔记
c++·cmake
肆悟先生2 小时前
3.16 含有可变参数的函数
c++·算法
郝学胜-神的一滴2 小时前
封装OpenGL的Shader相关类:从理论到实践
开发语言·c++·程序人生·游戏·图形渲染
Bruce_kaizy2 小时前
c++图论————最短路之Floyd&Dijkstra算法
c++·算法·图论
黎雁·泠崖2 小时前
指针收官篇:sizeof/strlen + 指针运算笔试考点全梳理
c语言·开发语言
WBluuue2 小时前
AtCoder Beginner Contest 437(ABCDEF)
c++·算法
郝学胜-神的一滴2 小时前
Linux 下循环创建多线程:深入解析与实践指南
linux·服务器·c++·程序人生·算法·设计模式