在C ++中,您可以传入“函数类型”,它类似于函数指针,但它们只是函数的类型而不是指向它的指针。例如:
template< typename T >
class MyTemplateClass
{
// ...
};
// ... and later...
MyTemplateClass<void (int, int)> mtc;
此表格的正确名称是什么?这是“功能类型”吗?
我编辑了我的例子,以便更清楚一些。但是,请记住我试图指出的样本的主要部分是void (int, int)
部分。
答案 0 :(得分:6)
是的,这个词是“功能类型”。
答案 1 :(得分:3)
是的,这是一个“功能类型”
8.3.5 [dcl.fct]说
- 在声明中,其中D的格式为
D1 ( parameter-declaration-clause ) cv-qualifier-seq
选择ref-qualifier
选择exception-specification
optattribute-specifier-seq
opt [...]- 在声明中,其中D的格式为
D1 ( parameter-declaration-clause ) cv-qualifier-seq
选择ref-qualifier
选择exception-specification
optattribute-specifier-seq
选择trailing-return-type
[...]- 任何一种形式的类型都是函数类型。
醇>
答案 2 :(得分:1)
它们只是函数指针,因为语法有点类似;否则它们与函数指针无关(即它们不包含任何数据或任何此类事物)。但是,David Rodriguez在下面指出,他们可能被认为与int
与int*
相关的方式相关。
无论如何,它们只是类型,例如int
(不是 int
,只是int
。)