网站首页 > 文章精选 正文
然后我们再来看函数调用运算符重载,
其实这个,重载后的,函数调用运算符有点像,仿函数,什么是仿函数,一会我们再说
我们去写一个MyPrint类
里面重载函数调用运算符,可以看到函数调用运算符的重载的写法
operator()(),这样的写法在java中是没有的
然后,我们传入一个test参数,然后打印这个参数
上面报错了,需要引入string包
然后我们在test01,方法中,测试
先去创建一个myPrint对象,然后,
直接调用myPrint("hello world");
可以看到,这里传入helloword的时候,跟调用一个方法一样,看起来.
我们执行可以看到,打印出了hello world,木有问题
然后我们再去写一个方法MyPrint02,这是个全局函数.
然后我们在test01中调用.
执行看结果,没问题对吧,但是可以看出来,使用函数调用运算符重载和
直接使用函数调用,是非常非常像的,所以我们把,
上面,我们这种,通过重载函数调用运算符,实现的,通过对象的调用,传入参数,
实现的函数调用运算符重载函数的调用,叫做仿函数.
可以看到,上面有说明
然后,我们可以再去写一个类,MyAdd
可以看到,里面也写了一个,函数调用的运算符重载函数.
我们在test02测试方法中,创建一个,
myadd对象,然后打印,结果去看看
可以看到没问题对吧,
然后这就说明了,仿函数没有一种固定的写法.
可以看到,我们这次写的这个仿函数和之前写的那个仿函数的,参数不一样,
返回值也不一样.
然后我们这里再去看一下,这里提出一个概念,
就是匿名函数对象,
可以看到上面的写法,MyAdd()(100,100),
这里实际上MyAdd(),其实就是返回了一个对象,然后
后面那个(100,100),是调用了,对函数调用运算符的重载函数,
,并且,这个时候,MyAdd(),这样写,会创建一个对象,而且这个对象,没有名字
所以这种方式创建的对象,也叫匿名函数对象.
并且,这个匿名函数对象,的作用域只在这一行中有效.出了这一行就不用了.
所以,当我们,只想使用一次,就销毁这个对象的这种应用场景的时候,就可以
用这个,匿名函数对象.
可以看到,执行结果也没问题.
- 上一篇: c++ 专题 运算符重载
- 下一篇: python运算符重载和上下文管理
猜你喜欢
- 2025-03-11 python运算符重载之构造函数和迭代器
- 2025-03-11 C++知识点 35:赋值运算符重载
- 2025-03-11 python整理之运算符重载
- 2025-03-11 python运算符重载和上下文管理
- 2025-03-11 C++中重载运算符的使用
- 2025-03-11 c++ 专题 运算符重载
- 2025-03-11 C/C++编程笔记:C++中的运算符重载
- 最近发表
- 标签列表
-
- newcoder (56)
- 字符串的长度是指 (45)
- drawcontours()参数说明 (60)
- unsignedshortint (59)
- postman并发请求 (47)
- python列表删除 (50)
- 左程云什么水平 (56)
- 计算机网络的拓扑结构是指() (45)
- 稳压管的稳压区是工作在什么区 (45)
- 编程题 (64)
- postgresql默认端口 (66)
- 数据库的概念模型独立于 (48)
- 产生系统死锁的原因可能是由于 (51)
- 数据库中只存放视图的 (62)
- 在vi中退出不保存的命令是 (53)
- 哪个命令可以将普通用户转换成超级用户 (49)
- noscript标签的作用 (48)
- 联合利华网申 (49)
- swagger和postman (46)
- 结构化程序设计主要强调 (53)
- 172.1 (57)
- apipostwebsocket (47)
- 唯品会后台 (61)
- 简历助手 (56)
- offshow (61)