C++_类和对象_C++运算符重载_函数调用运算符重载

C++_类和对象_C++运算符重载_函数调用运算符重载

编码文章call10242025-03-17 16:06:3045A+A-

然后我们再来看函数调用运算符重载,

其实这个,重载后的,函数调用运算符有点像,仿函数,什么是仿函数,一会我们再说

我们去写一个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(),这样写,会创建一个对象,而且这个对象,没有名字

所以这种方式创建的对象,也叫匿名函数对象.


并且,这个匿名函数对象,的作用域只在这一行中有效.出了这一行就不用了.

所以,当我们,只想使用一次,就销毁这个对象的这种应用场景的时候,就可以

用这个,匿名函数对象.

可以看到,执行结果也没问题.











点击这里复制本文地址 以上内容由文彬编程网整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
qrcode

文彬编程网 © All Rights Reserved.  蜀ICP备2024111239号-4