C++学习Day05之函数调用运算符重载

news2025/1/23 5:55:15

目录

  • 一、程序及输出
  • 二、分析与总结


一、程序及输出

#include<iostream>
using namespace std;
#include <string>

class MyPrint
{
public:
	void operator()(string text)
	{
		cout << text+"运算符重载" << endl;
	}
};


void MyPrint2(string str)
{
	cout << str << endl;
}

void test01()
{
	MyPrint myPrint;
	myPrint("hello world"); // 仿函数  本质是一个对象   函数对象

	MyPrint2("hello world"); //普通函数
}



class MyAdd
{
public:
	int operator()(int a,int b)
	{
		return a + b;
	}
	~MyAdd()
	{
		cout << "MyAdd的析构调用" << endl;
	}

};

void test02()
{
	MyAdd myAdd;
	cout << myAdd(1, 1) << endl;

	cout << MyAdd()(1, 1) << endl; // 匿名函数对象 特点:当前行执行完立即释放

	cout << "------------------------" << endl; // 匿名函数对象 特点:当前行执行完立即释放
}

int main(){
	test01();
	test02();
	system("pause");
	return EXIT_SUCCESS;
}

输出:
在这里插入图片描述


二、分析与总结

在 C++ 中,函数调用运算符 () 可以被重载,使得类的对象可以像函数一样被调用。通过函数调用运算符重载,我们可以定义类对象被调用时的行为,使其表现得像一个函数。

函数调用运算符重载的语法: 函数调用运算符重载的一般形式为 ReturnType operator()(Parameters),其中 ReturnType 是返回类型,Parameters 是参数列表。重载函数可以是类的成员函数或友元函数。
函数调用运算符的返回类型: 函数调用运算符重载可以定义任意返回类型,包括对象、引用、指针等。根据具体的需求和语义来选择返回类型。
函数调用运算符的参数: 参数列表可以根据需要定义,可以是任意类型的参数,也可以是常量引用、值传递等。参数列表的选择应该符合对象被调用时的语义。
函数调用运算符的实现: 在函数调用运算符重载函数中,可以根据对象的状态和参数来执行相应的操作,然后返回结果。可以实现对象的状态更新、计算、查询等功能。
常用的函数调用运算符重载
用于执行特定操作:例如执行某种计算、状态更新等。
用于模拟函数:将对象的行为模拟成函数,使其可以被调用。
使用函数调用运算符的场景
仿函数(函数对象):通过函数调用运算符重载,可以创建仿函数对象,用于在标准库算法中进行操作。
类对象的行为模拟成函数:使类对象可以像函数一样被调用,方便使用者调用对象的功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1454642.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

海外媒体发稿:8个提升影响力的日韩地区媒体发稿推广策略-华媒舍

在今天的数字化时代&#xff0c;媒体发稿推广成为企业和个人增加影响力的重要方式。特别是在日韩地区&#xff0c;这个拥有庞大媒体市场和活跃社交媒体用户的地区&#xff0c;正确的推广策略将对影响力的提升起到关键作用。我们将介绍8个提升影响力的日韩地区媒体发稿推广策略。…

C++智能指针的知识!

个人主页&#xff1a;PingdiGuo_guo 收录专栏&#xff1a;C干货专栏 大家好呀&#xff0c;我是PingdiGuo_guo&#xff0c;今天我们来学习一下智能指针。 文章目录 1.智能指针的概念 2.智能指针的思想 3.智能指针的作用 3.1 自动内存管理 3.2 共享所有权 3.3 避免悬挂指针…

Linux第58步_备份busybox生成rootfs根文件系统

备份busybox生成rootfs根文件系统 打开终端 输入“ls回车” 输入“cd linux/回车” 输入“ls回车”&#xff0c;产看“linux”目录下的文件和文件夹 输入“cd nfs/回车”&#xff0c;切换到“nfs”目录 输入“ls回车”&#xff0c;产看“nfs”目录下的文件和文件夹 输入…

软件实例分享,台球厅收费系统电脑桌球店计时软件及灯控线路图教程

软件实例分享&#xff0c;台球厅收费系统电脑桌球店计时软件及灯控线路图教程 一、前言 以下软件程序教程以 佳易王桌球室计时计费软件V17.0为例说明 软件文件下载可以点击最下方官网卡片——软件下载——试用版软件下载 1、每个桌子对应的有 开台时间&#xff0c;所用的时…

为什么将二维码分解成文字? 二维码在线转文字的方法

将二维码分解成文字的主要目的是为了方便人们获取二维码中的信息便于使用。二维码是一种由黑白方块组成的图案&#xff0c;可以存储大量的数据&#xff0c;如网址、联系方式、产品信息等。然而&#xff0c;对于一些特定的场景或个人需求&#xff0c;无法直接扫描二维码。因此&a…

Java数字孪生智慧工地数据大屏APP项目源码

目录 智慧工地云平台核心功能 1.劳务管理 2.视频监控 3.安全教育 4.进度管理 5.环境监测 6.塔吊监控 7.升降机监控 8.工地广播 9.深基坑高支模 10.AI识别 11.安全质量 智慧工地建设的价值和意义 危大工程管理 智慧工地聚焦施工现场一线生产活动&#xff0c;利用物…

线性回归-使用ClickHouse机器学习函数

本文字数&#xff1a;5923&#xff1b;估计阅读时间&#xff1a;15 分钟 作者&#xff1a;Ensemble 审校&#xff1a;庄晓东&#xff08;魏庄&#xff09; 本文在公众号【ClickHouseInc】首发 这原本是转发的ensemble analytics的文章。 【https://ensembleanalytics.io/blog/l…

全网Bento和3D?点评2024年UX/UI设计趋势

2024年已经到来&#xff0c;对于UX/UI设计领域来说&#xff0c;这可能是过去若干年来UI / UX趋势最统一、最确定的一年。在接下来的文章中&#xff0c;笔者将在点评各个设计趋势的同时&#xff0c;分析现象背后的原因&#xff0c;并给新入行的设计师一些成长的建议。 什么是UI和…

CVE-2022-24652 漏洞复现

CVE-2022-24652 开题 后台管理是thinkphp的&#xff0c;但是工具没检测出漏洞。 登陆后界面如下&#xff0c;上传头像功能值得引起注意 这其实就是CVE-2022-24652&#xff0c;危险类型文件的不加限制上传&#xff0c;是文件上传漏洞。漏洞路由/user/upload/upload 参考文章&a…

《Java 简易速速上手小册》第1章:Java 编程基础(2024 最新版)

文章目录 1.1 Java 概述 - 不只是咖啡1.1.1 基础知识1.1.2 重点案例&#xff1a;网上银行应用1.1.3 拓展案例 1&#xff1a;电子商务平台1.1.4 拓展案例 2&#xff1a;物联网&#xff08;IoT&#xff09;系统 1.2 Java 开发环境设置 - 魔法开始的地方1.2.1 基础知识1.2.2 重点案…

【JavaEE】IP协议

作者主页&#xff1a;paper jie_博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文于《JavaEE》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…

腾讯云OSS文件上传功能

腾讯云COS介绍 腾讯云COS&#xff08;Cloud Object Storage&#xff09;是一种基于对象的存储服务&#xff0c;用于存储和管理海量的非结构化数据&#xff0c;如图片、音视频文件、备份数据等。它具有以下特点和优势&#xff1a; 高可靠性&#xff1a;采用分布式存储架构&…

MCU看门狗

目录 一、独立看门狗(IWDG) 1、IWDG 主要作用 2、IWDG 主要特性 3、编程控制 4、注意地方 二、窗口看门狗(WWDG) 1、窗口看门狗作用&#xff1a; 2、窗口看门狗产生复位信号有两个条件&#xff1a; 3、WWDG 框图 4、WWDG 将要复位的时间 5、编程控制 一、独立看门…

揭秘京东商品背后的秘密:一键获取详细数据,打造全新购物体验

京东商品详情原数据API接口技术详解 一、概述 京东商品详情原数据API接口是京东开放平台提供的一套用于获取商品详细信息的接口。通过调用该接口&#xff0c;第三方开发者可以获取包括商品描述、价格、图片、评价等详细信息&#xff0c;进而在自己的应用或网站中展示给用户&a…

【STM32 物联网】AT指令与TCP,发送与接收数据

文章目录 前言一、连接TCP服务器1.1 配置Wifi模式1.2 连接路由器1.3 查询ESP8266设备IP地址1.4 连接TCP服务器 二、向服务器接收数据和发送数据2.1 发送数据2.2 接收数据 总结 前言 随着物联网&#xff08;IoT&#xff09;技术的迅速发展&#xff0c;越来越多的设备和系统开始…

Python:异常处理

异常处理已经成为判断一门编程语言是否成熟的标准&#xff0c;除传统的像C语言没有提供异常机制之外&#xff0c;目前主流的编程语言如Python、Java、Kotlin等都提供了成熟的异常机制。异常机制可以使程序中的异常处理代码和正常业务代码分离&#xff0c;保证代码更加优雅&…

机器学习第二十八周周报 PINNs2

文章目录 week28 PINNs2摘要Abstract一、Lipschitz条件二、文献阅读1. 题目数据驱动的偏微分方程2. 连续时间模型3. 离散时间模型4.结论 三、CLSTM1. 任务要求2. 实验结果3. 实验代码3.1模型构建3.2训练过程代码 小结参考文献 week28 PINNs2 摘要 本文主要讨论PINN。本文简要…

vue-路由(六)

阅读文章你可以收获什么&#xff1f; 1 明白什么是单页应用 2 知道vue中的路由是什么 3 知道如何使用vueRouter这个路由插件 4 知道如何如何封装路由组件 5 知道vue中的声明式导航router-link的用法 6 知道vue中的编程式导航的使用 7 知道声明式导航和编程式导航式如何传…

代码随想录算法训练营DAY19 | 二叉树 (6)

一、LeetCode 654 最大二叉树 题目链接&#xff1a;654.最大二叉树https://leetcode.cn/problems/maximum-binary-tree/ 思路&#xff1a;坚持左开右闭原则&#xff0c;递归划分数组元素生成左右子树。 class Solution {public TreeNode constructMaximumBinaryTree(int[] num…

数字人如何激发广电内容创新可能性?

在数字化传播时代&#xff0c;数字人的兴起对激发传统文化的内在活力具有重要意义。如河南广电以《唐宫夜宴》中唐代仕女为原型设计&#xff0c;推出身穿三彩襦裙的数字人“唐小妹”&#xff0c;目前数字人“唐小妹”已在河南卫视中国节日系列的多个节目中出现&#xff0c;带给…