gpt4 book ai didi

c++ - 指向函数的指针是函数对象类型吗?

转载 作者:行者123 更新时间:2023-11-30 00:50:22 25 4
gpt4 key购买 nike

在我看来,函数对象是一个实现operator()的类。

class Functor
{
public:
int operator()(int a, int b)
{
...
}
};

但是,在我问的另一个问题(about std::result_of in c++11)中,Casey 指出指向函数的指针是函数对象类型,因此是可调用类型。

在 C++ 引用中:

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)

An object type is a (possibly cv-qualified) type that is not a function type, not a reference type, and not a void type.(3.9)

所以看起来指向函数的指针可以被视为函数对象,尽管它改变了我对函数对象的看法。是这样吗?

最佳答案

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

§20.8 [function.objects]

脚注 230 (N3337),附在标准中的上述句子之后,指出:

Such a type is a function pointer or a class type which has a member operator() or a class type which has a conversion to a pointer to function.

因此,函数指针类型是函数对象类型。标准继续:

A function object is an object of a function object type.

§20.8 [function.objects]

因此函数指针是函数对象类型,是函数对象。

请注意,尽管有“对象”的传统含义,指针在 C++ 中也是对象:

An object is a region of storage.

§1.8 [intro.object]

因此,占用存储区域的指针是对象。

关于c++ - 指向函数的指针是函数对象类型吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25299888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com