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

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

相关推荐
代码中介商12 分钟前
C语言函数完全指南:从基础到实践
c语言·开发语言
Yungoal18 分钟前
项目层级结构
c++
hssfscv22 分钟前
软件设计师下午试题四——C语言(N皇后问题、分治、动态规划)
c语言·算法·动态规划
程序员-King.1 小时前
【基础分析】—— 条件变量wait(lock, 谓词)
c++·c·多线程·条件变量
故事和你911 小时前
洛谷-算法1-7-搜索3
数据结构·c++·算法·leetcode·动态规划
爱编码的小八嘎1 小时前
C语言完美演绎8-7
c语言
网域小星球1 小时前
C++ 从 0 入门(四)|继承、多态、this 指针、深浅拷贝(C++ 面试终极收官)
开发语言·c++·面试·多态·继承·this指针·深浅拷贝
想唱rap2 小时前
C++智能指针
linux·jvm·数据结构·c++·mysql·ubuntu·bash
前进吧-程序员3 小时前
现代 C++ 异步编程:从零实现一个高性能 ThreadPool (C++20 深度实践)
开发语言·c++·c++20
pearlthriving3 小时前
c++当中的泛型思想以及c++11部分新特性
java·开发语言·c++