C++的函数调用语法实体有函数、类似于函数的宏、函数指针、仿函数(即函数对象)。函数调用的方式有:     (1)直接调用:通过函数名直接调用函数,函数起始地址成为指令的一部分,因此编译期就能确定调用了哪个函数。     (2)间接调用:通过函数指针来调用函数,函数起始地址位于内存或寄存器的某处,因此到运行期才能确定调用哪个函数。所以仿函数比函数指针快,仿函数在编译器就确定好了。     (3)内联调用:直接在调用处展开函数代码,在编译期进行,因此到运行期就不存在函数调用了。     对函数指针和仿函数的使用,基本上都是某种形式的回调。因为仿函数是类对象,因此我们可以在仿函数中关联状态信息,仿函数可以作为模板的类型实参来传递,也可以作为函数调用实参来传递。但仿函数是类对象,因此不能作为非类型模板实参,但函数指针可以作为非模板模板实参。
点赞 评论

相关推荐

牛客网
牛客企业服务