函数指针是C++中的函数对象吗?

Vin*_*ent 8 c++ function function-object type-traits c++11

C++标准将函数对象定义为:

函数对象类型是一种对象类型,可以是函数调用中postfix-expression的类型.(链接)

首先,我在想,函数对象是仿函数,但后来我意识到,对于一个函数指针ptr类型的P(不是功能,而是一个函数指针)std::is_object_v<P>true,可与被称为ptr(Args...)语法.

我认为函数指针被标准视为函数对象是对的吗?如果它们不是函数指针不满足定义的哪一部分?

T.C*_*.C. 16

对,他们是.C++标准中的术语"对象"并不意味着OOP意义上的"对象".一个int是一个对象.

  • @Rodrigo:C++标准不使用术语"functor"(因此没有给出定义).大多数人会以包含所有非函数指针的函数对象的方式定义仿函数 (7认同)