函数对象基本使用

一、函数对象概念

1.重载函数调用操作符的类,其对象常称为函数对象

2.函数对象使用重载的()时,行为类似函数调用,也叫仿函数

本质: 函数对象(仿函数)是一个类,不是一个函数

二、函数对象使用

特点:

函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值

函数对象超出普通函数的概念,函数对象可以有自己的状态

函数对象可以作为参数传递

代码示例:

#include<iostream>
using namespace std;

//1.函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值
class MyAdd
{
public:
	int operator()(int v1, int v2)
	{
		return v1 + v2;
	}
};

void test01()
{
	MyAdd myAdd;
	cout << myAdd(10, 10) << endl;
}

//2.函数对象超出普通函数的概念,函数对象可以有自己的状态
class MyPrint
{
public:
	MyPrint()
	{
		this->count = 0;
	}
	void operator()(string test)
	{
		cout << test << endl;
		this->count++;
	}

	int count;//内部自己的状态
};

void test02()
{
	MyPrint myPrint;
	myPrint("hello world");
	myPrint("hello world");
	myPrint("hello world");
	myPrint("hello world");

	cout << "myPrint调用的次数为:" << myPrint.count << endl;
}

//3.函数对象可以作为参数传递
void doPrint(MyPrint& mp, string test)
{
	mp(test);
}

void test03()
{
	MyPrint myPrint;
	doPrint(myPrint, "Hello C++");
}

int main64()
{
	//test01();
	//test02();
	test03();

	return 0;
}

总结: 仿函数写法非常灵活,可以作为参数进行传递

相关推荐

  1. 函数对象基本使用

    2024-04-05 13:44:05       45 阅读
  2. C++函数对象使用

    2024-04-05 13:44:05       39 阅读
  3. 【Swift】如何让实例对象函数一样使用

    2024-04-05 13:44:05       43 阅读
  4. 使用一等对象函数重构策略模式

    2024-04-05 13:44:05       30 阅读
  5. ajax函数库axios基本使用

    2024-04-05 13:44:05       55 阅读
  6. 【C语言】函数基本使用

    2024-04-05 13:44:05       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 13:44:05       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 13:44:05       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 13:44:05       82 阅读
  4. Python语言-面向对象

    2024-04-05 13:44:05       91 阅读

热门阅读

  1. linux安装docker(可靠)

    2024-04-05 13:44:05       33 阅读
  2. vue使用elementui组件的的对话框;使用ref

    2024-04-05 13:44:05       38 阅读
  3. 02 OSI和TCP/IP参考模型

    2024-04-05 13:44:05       36 阅读
  4. RabbitMQ交换机

    2024-04-05 13:44:05       31 阅读
  5. Linux常用命令总结

    2024-04-05 13:44:05       38 阅读
  6. TWO POINTERS MOCK

    2024-04-05 13:44:05       32 阅读
  7. A-B 数对

    2024-04-05 13:44:05       41 阅读
  8. Azure 虚拟机端口排障

    2024-04-05 13:44:05       36 阅读
  9. Docker实战教程 第3章 Dockerfile

    2024-04-05 13:44:05       37 阅读
  10. 构造方法和普通方法区别是啥?

    2024-04-05 13:44:05       34 阅读