c++

您所在的位置:网站首页 函数指针函数对象 c++

c++

2024-04-20 11:00| 来源: 网络整理| 查看: 265

c++ - 函数指针、函数对象和 lambda 函数之间有什么区别?

标签 c++ c++11

很难说出这里要问什么。这个问题模棱两可、含糊不清、不完整、过于宽泛或夸夸其谈,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开,visit the help center . 关闭 10 年前。

我知道每个都可以传递给另一个函数。在我看来,他们都喜欢有细微差别的替代品。

函数指针:指向函数的指针

函数对象:重载了 () 运算符的类的实例;能够充当函数;

lambda 函数:一个匿名函数(在 C++11 中新引入),可以在现场定义,并且只存在于它所属的语句的生命周期内

由于其中的微妙之处,我想知道这 3 个选择中的哪一个在给定场景中最合适。所以,那里的专家,请阐明一些(关于某些选择标准?)以便我可以在不同的场景中决定和使用它们。

最佳答案

函数对象:您可以使用f(x) 语法调用的对象f。这包括函数指针、具有重载 operator() 的类对象或函数指针/引用的转换函数。

标准对其有直接的定义

A function object type is an object type (3.9) that can be the type of the postfix-expression in a function call (5.2.2, 13.3.1.1). A function object is an object of a function object type.

特别是,函数 或函数引用 不是函数对象,即使它们是可调用实体。有些人混淆了术语“函数对象”,并认为它完全是指具有重载的 operator() 的类类型对象。

函数指针:一个错误的函数指针

lambda 函数:我认为您指的是 C++11 lambda。这些并不是真正的函数,而是编译器生成的特殊类类型函数对象,它们具有重载的 operator()。

关于c++ - 函数指针、函数对象和 lambda 函数之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12203347/



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3