函数指针和函数对象详解
1。函数指针
在C++中,指针本质上是内存中的地址。如果内存地址中存放的是某个数据,那么这个指针就是普通数据指针。如果这个内存地址中存放的是某个函数,那么这个指针就是函数指针。
C++ 中的每个函数都有一个入口地址。入口地址是函数指针指向的内存地址。一旦有了指向函数的指针变量,就可以使用这个函数指针变量来调用函数。如果使用数据指针变量 可以作为它所指向的数据来引用。
C++代码编译后,每个函数都有一个入口地址,函数名代表这个入口地址。
函数指针声明语法:
函数返回值类型标识符(指针变量名)(形参列表)
例如:
取消打印密码( int nScore);
如果要声明指向该函数的函数指针,则:
void (*pPrintFunc)(int nScore);
或 void (*pPrintFunc)(int); //省略形参名称
函数指针的赋值可以直接将函数名赋值给函数指针名来完成,即函数名就是指向函数的指针:
pPrintFunc = PrintPass;
函数指针的使用:
1。使用函数指针来简化调用函数的过程
通过将不同的函数赋值给函数指针,最终统一调用函数指针变量,达到统一。接口调用不同函数的目的是为了简化函数调用过程;
2。使用函数指针实现回调函数
2。函数对象
函数对象(函子或函数对象)
#include
函数对象也称为函子。
所谓函数对象,就是定义了函数调用操作符(function-call operator),即operator()的普通类的对象。
函数对象将函数封装在对象中(实际上是定义一个重载operator()的公共类),这样就可以将其作为参数传递给适当的STL算法,从而扩展算法的功能。
函数对象是设计为具有与函数类类似的功能的对象。在C++中,这可以通过在类中定义成员函数operator()来实现。
定义完函数对象类后,就可以开始使用函数对象类创建相应的函数对象,并使用这些函数对象进行具体的计算。函数对象作为特定类的实例变量,可以单独使用,也可以像函数指针一样作为参数传递给其他函数并在其他函数中使用。
https://www.introzo.com/a20102110080212/article/details/11675497?readlog
用户可以定义自己的函数对象。让我们定义一个我们自己的函数对象。
#包括
使用 命名空间 std;
结构int_max{
int 运算符()(int x,int y){返回 x>y?x:y ; }
};//operator()重载了“()”,(int x,int y)为参数列表
intmain()
{
cout<3,4)<返回0;
}
这里的int_max()是一个函数对象。 struct关键字也可以用class代替,但是struct默认具有public访问权限,而class定义了默认的private访问权限。让我们定义一个STL风格的函数对象:
相关文章
- 10-05 长电科技表示,已具备4nm手机芯片封装能力,以及C
- 10-05 中国信息通信研究院公布可信隐私计算评估结果, Mo
- 10-05 信通院:2022年7月国内手机出货量1990.8万
- 10-05 Numpy.frompyfunc() 将计算单个值
- 10-05 C语言·删除数组第0个元素
- 10-05 (2)NumPy库初识(数组运算和运算)
- 10-05 什么是手机副卡
- 10-05 副手机卡可以独立吗?
- 10-05 手机主卡可以查询副卡的哪些信息
- 10-05 如何修复 WINDOWS 11/10 中磁盘空间使
- 10-05 4 款最佳 Windows 11 声卡可供选择
- 10-05 如何在 Windows 10/11 上加速 Goo
- 10-05 什么是增值电信服务
- 10-05 电信卡的定向流量包括哪些软件?
- 10-05 电信app叫什么名字
- 10-05 什么是独立显卡直连?
- 10-05 独立显卡直连是什么意思?
- 10-05 为什么复制密码后打开淘宝不弹出弹窗?
- 10-05 PHP提高培训学校_php软件培训中心
- 10-05 vs创建项目跳回创建窗口_vs2017创建项目无法
- 最近发表