我知道每个都可以传递给另一个函数.在我看来,所有这些都像是微妙差异的替代品.
函数指针:指向函数的指针
function object:重载了()运算符的类的实例; 能够充当一种功能;
lambda函数:一个匿名函数(在C++ 11中新引入),可以在现场定义,并且仅在语句的生命周期中存在
由于微妙之处,我想知道在给定场景中哪三种选择中哪一种最合适.所以,那里的专家,请一些亮点(根据一些选择标准?),以便我可以在不同的场景中决定和使用它们.
function object:f可以使用f(x)语法调用的对象.这包括函数指针,具有operator()函数指针/引用的重载或转换函数的类对象.
标准有一个直截了当的定义
函数对象类型是对象类型(3.9),它可以是函数调用中的postfix-expression的类型(5.2.2,13.3.1.1).函数对象是函数对象类型的对象.
特别是,函数或函数引用不是函数对象,即使它们是可调用实体.有些人会混淆术语"函数对象",并将其视为仅具有重载的类型对象operator().
函数指针:一个错误,指向函数的指针
lambda函数:我想你是指C++ 11 lambdas.这些不是真正的函数,而是具有重载的特殊编译器生成的类类型函数对象operator().
| 归档时间: |
|
| 查看次数: |
1671 次 |
| 最近记录: |