c++:STL-函数对象

2023-10-26

函数对象

函数对象的概念

1.重载函数调用操作符的类,其对象常称为函数对象
2.函数对象使用重载的()时,行为类似函数调用,也叫仿函数
本质
函数对象仿函数是一个类,不是一个函数

函数对象使用

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

#include <iostream>
using namespace std;

class MyAdd
{
public:
	int operator()(int v1, int v2) //参数
	{
		return v1 + v2; //返回值
	}
};

void test1()
{
	MyAdd myadd;
	cout << myadd(10, 10) << endl;
}

int main()
{
	test1();
	system("pause");
	return 0;
}

在这里插入图片描述
2.函数对象超出普通函数的概念,函数对象可以有自己的状态

#include <iostream>
using namespace std;

class MyAdd
{
public:
	MyAdd()
	{
		this->Mycount = 0;
	}

	int operator()(int v1, int v2)
	{
		this->Mycount++;
		return v1 + v2;
	}
	int Mycount; //定义一个变量记录状态
};

void test1()
{
	MyAdd myadd;
	cout << myadd(10, 10) << endl;
	cout << myadd(10, 10) << endl;
	cout << myadd(10, 10) << endl;
	cout << myadd(10, 10) << endl;
	cout << myadd(10, 10) << endl;
	cout << myadd.Mycount << endl;
}
int main()
{
	test1();
	system("pause");
	return 0;
}

在这里插入图片描述

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

#include <iostream>
using namespace std;

class MyAdd
{
public:
	MyAdd()
	{
		this->Mycount = 0;
	}

	int operator()(int v1, int v2)
	{
		this->Mycount++;
		return v1 + v2;
	}
	int Mycount;
};
void doPrint(MyAdd& mp, int v1, int v2)
{
	cout << mp(v1, v2) << endl;
}

void test1()
{
	MyAdd myadd;
	doPrint(myadd,10,11);
}

int main()
{
	test1();
	system("pause");
	return 0;
}

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

c++:STL-函数对象 的相关文章

随机推荐

  • OpenVX 的 立即模式(immediate mode)和图模式(graph mode)和示例讲解

    OpenVX 的 立即模式 immediate mode 和图模式 graph mode openvx的执行模型一般分为 立即模式 和 图模式 直接模式非常简单 以vxu 开头的函数类似于opencv 习惯于传统的opencv api的 能
  • 整理gitHub项目JavaGuide-CSDN版

    文章目录 java 基础 基础知识系统总结 重要知识点详解 其他 容器 并发 面试题总结 面试常问知识点 JVM 其他 网络 操作系统 Linux系统 数据结构与算法 数据结构 算法 常见算法问题总结 数据库 MySQL 总结 重要知识点
  • 小程序文件系统之 -- 读写文件

    1 文件写入 获取文件系统管理器 const fs wx getFileSystemManager const writeFile data url gt const filePath wx env USER DATA PATH test
  • JAVA8将集合中的某个字段相加、批量修改某个值、高效率循环、高效便捷遍历map

    1 集合中的某个字段相加 BigDecimal 类型保留两位 Objects为你的list集合 BigDecimal freightSum objects stream map Object getMoney reduce BigDecim
  • 获得python的list中含有重复值的index

    关于怎么获得 我想其实网上有很多答案 list index 获得值的索引值 但是如果list中含有的值一样 例如含有两个11 22 这样每次获得的都是第一个值的位置 那么怎么去解决这个问题呢 下面的程序对这个问题做了一定的解答 usr bi
  • 二维码图片生成,并返回给前端

    GetMapping value qrCode produces MediaType IMAGE PNG VALUE public byte qrCode return demoService qrCode public byte qrCo
  • vscode+ssh连接远程linux系统服务器,并用anaconda管理python环境

    vscode ssh连接远程linux系统服务器 并用anaconda管理python环境 一 vscode连接服务器 1 vscode下载插件 remote SSH 2 连接服务器 3 修改配置 二 将代码拷贝到服务器上与代码同步 1 转
  • 在内部局域网内搭建HTTPs

    在内部局域网内搭建HTTPs 配置环境 Windows版本 Windows Server 2008 R2 Standard Service Pack 1 系统类型 64 位操作系统 内存 4GB 了解HTTPS 为什么需要 HTTPS 多数
  • 使用Python,OpenCV应用EAST文本检测器检测自然场景图像中的文本

    使用Python OpenCV应用EAST文本检测器检测自然场景图像中的文本 1 效果图 2 原理 2 1 为什么自然场景文本检测如此具有挑战性 2 2 替代EAST文本检测实现 3 源码 3 1 text detection py 3 2
  • Mac电脑开机出现带问号的文件夹并且闪烁 apple.com/support -2003F

    文章目录 1 视界 2 背景 2 1 开始 2 2 恐慌 2 3 转机 2 3 1 时间机器 2 3 2 重新安装 3 2 3 磁盘恢复 4 欣喜 5 神转折 6 忐忑 7 凉凉了 8 root账户 9 磁盘管理 10 两天后 11 小结
  • 性能测试-JMeter influxdb grafana性能测试监控平台-食用指南

    目录 influxdb grafana安装 influxdb grafana启动 JMeter性能数据写入influxdb JMeter 后端监听器 grafana配置 influxdb grafana安装 yum install infl
  • FreeRTOS任务基础

    任务特性 没有数量限制 一个优先级下也可以拥有多个任务 支持抢占 FreeRTOS为抢占式内核高优先级可以抢占低优先级的CPU使用权 支持优先级 决定任务运行的先后 每个任务都拥有堆栈导致了RAM使用量增大 抢占需考虑重入问题 任务状态 运
  • 操作系统 实验一 进程调度实验

    操作系统实验一 进程调度实验 题目描述 1 设计一个有N个进程并发的进程调度程序 每个进程由PCB 表示 PCB中包含进程名 优先数 服务时间等信息 2 用链表表示就绪队列 每个进程PCB用结构体结点表示 3 已知各进程的的到达时间等如下
  • vs打开qt的ui文件,报错闪退+已解决

    触发行为 使用vs打开项目 点击ui文件后 数秒后qt designer闪退 报错内容 解决 方法一 鼠标右击 在qt designer 打开后 闪退前 鼠标右击 方法二 打开qt designer 打开最近窗口 扩展 gt qt gt q
  • MapReduce job任务源码提交流程

    waitForCompletion submit 1建立连接 connect 1 创建提交Job的代理 new Cluster getConfiguration 1 判断是本地yarn还是远程 initialize jobTrackAddr
  • linux下go语言代理

    export GO111MODULE on export GOPROXY https goproxy cn
  • mapper的使用

    一 通用mapper概述 它是mybatis的一个插件 单表查询的时候 使用通用mapper会非常的方便 极大地方便开发人员 可以按照需要选择通用方法 还可以自定义通用方法 不过它也有一个非常大的局限性 只支持单表操作 不支持多表查询 1
  • 独立按键(通过按键点亮LED灯)

    我们前几节用到的是IO口的输出 这一节我们学习独立按键用到了IO口的输入 按键的接触是靠金属弹片接触 那么这个时候就会出现一个问题 按键按下就会出现抖动 根据原理图 当按键 K1或K2或K3或K4 按下 P31或P30或P32或P33 端口
  • esp8266 串口乱码

    编码问题 波特率问题 这里提一下波特率问题 8266的启动信息波特率为 74880 一般的串口调试工具没有 这里可以使用安可信串口调试助手解决
  • c++:STL-函数对象

    函数对象 函数对象的概念 1 重载函数调用操作符的类 其对象常称为函数对象 2 函数对象使用重载的 时 行为类似函数调用 也叫仿函数 本质 函数对象仿函数是一个类 不是一个函数 函数对象使用 特点 1 函数对象在使用时 可以像普通函数那样去