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

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

相关推荐
DYS_房东的猫8 分钟前
《 C++ 零基础入门教程》第8章:多线程与并发编程 —— 让程序“同时做多件事”
开发语言·c++·算法
REDcker9 分钟前
AIGCJson 库介绍与使用指南
c++·json·aigc·c
setary030121 分钟前
c++泛型编程之Typelists
开发语言·c++
松涛和鸣24 分钟前
DAY53 UART Serial Communication
c语言·单片机·嵌入式硬件·tcp/ip·51单片机
傻乐u兔27 分钟前
C语言初阶————调试实用技巧1
c语言·开发语言
一颗青果42 分钟前
短线重连代码实现
开发语言·网络·c++
陳10301 小时前
C++:list(1)
开发语言·c++
小CC吃豆子1 小时前
如何在 VS Code 中调试 C++ 程序?
开发语言·c++
CoderCodingNo1 小时前
【GESP】C++五级/六级练习题(前缀和/动态规划考点) luogu-P1719 最大加权矩形
开发语言·c++·动态规划
xiaoye-duck1 小时前
吃透C++类和对象(中):const成员函数与取地址运算符重载深度解析
c++