在C++中,函数对象与函数指针有什么区别呢?

如题,最近在复习语言基础的时候遇到了这个问题,百度和Google一些资料,但是依然一头雾水的,请问各位牛油有较好的理解么?
全部评论
函数对象说的就是函数指针的解引用吧?cprimeplus上的说法是没有任何区别
点赞 回复 分享
发布于 2017-08-29 09:13
C++的函数调用语法实体有函数、类似于函数的宏、函数指针、仿函数(即函数对象)。函数调用的方式有:     (1)直接调用:通过函数名直接调用函数,函数起始地址成为指令的一部分,因此编译期就能确定调用了哪个函数。     (2)间接调用:通过函数指针来调用函数,函数起始地址位于内存或寄存器的某处,因此到运行期才能确定调用哪个函数。所以仿函数比函数指针快,仿函数在编译器就确定好了。     (3)内联调用:直接在调用处展开函数代码,在编译期进行,因此到运行期就不存在函数调用了。     对函数指针和仿函数的使用,基本上都是某种形式的回调。因为仿函数是类对象,因此我们可以在仿函数中关联状态信息,仿函数可以作为模板的类型实参来传递,也可以作为函数调用实参来传递。但仿函数是类对象,因此不能作为非类型模板实参,但函数指针可以作为非模板模板实参。
点赞 回复 分享
发布于 2017-08-28 15:02
仿函数就是重载了()得类,它不是一个函数,函数指针是指向函数的指针变量,两个本质上就有区别
点赞 回复 分享
发布于 2017-08-28 14:49
程序中函数对象越多,程序运行得越慢
点赞 回复 分享
发布于 2017-08-28 14:30
最核心的就是有状态和无状态     functor类似于一个对象(有自己的状态,可以执行函数的功能)     函数指针指向一个函数,只可以执行功能,没有状态 感觉理解了C++的对象模型,从这个角度去想应该很好理解吧
点赞 回复 分享
发布于 2017-08-28 14:02
functor既能向普通函数一样传入给定数量的参数,也能存储或处理更多的信息。这些信息以成员变量的形式出现
点赞 回复 分享
发布于 2017-08-28 13:29
函数哪来的对象?
点赞 回复 分享
发布于 2017-08-28 13:05
就是面向对象的封装
点赞 回复 分享
发布于 2017-08-28 12:42
仿函数跟函数指针? 仿函数可以记录一些信息。而且可以内联优化,效率更高吧。
点赞 回复 分享
发布于 2017-08-28 12:04

相关推荐

RickieOne:还有一个面试,上来就笔试算法 1️⃣ 字符串分割不能用 split ,ab&&c,根据&&放到数组上 2️⃣a 到 z 的全部组合情况,包括 a...z 3️⃣多线程,同时打印 1-200 4️⃣sql 代码 考分组 聚合 平均结合 小厂也这样吗,然后就八股 再拷打项目
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务