【发布时间】:2011-08-17 02:06:47
【问题描述】:
在 C++ 中,您可以传入“函数类型”,它们类似于函数指针,但它们只是函数的类型,而不是指向它的指针。例如:
template< typename T >
class MyTemplateClass
{
// ...
};
// ... and later...
MyTemplateClass<void (int, int)> mtc;
这个表格的正确名称是什么?这是“函数类型”吗?
更新:
我编辑了我的示例,使其更加清晰。但是,请记住我要指出的示例的主要部分是 void (int, int) 部分。
【问题讨论】:
-
类是做什么的?如果它只是一个函数的类型,也许你可以称它为“函数类”?因为您正在定义一个特定类型函数的类。我只是在这里发明新词:P
-
类型的正确名称是什么?无论是函数、对象、积分、指针,还是我认为仍然是类型的任何东西。
-
丑。不要打我。但这真的有效吗?在标准中,我看到您可以使用“typename”。这似乎是唯一的语法选择,因为“类”和“模板”显然不起作用。 void(int, int) 只是类型名的疯狂速记吗?这是什么编译器?再一次......随意给我上学。我意识到我以前从未见过这种情况。
-
是的,它基本上是一个函数。大多数人将其键入为某事。
void(int, int)是一个函数类型,它接受两个int并返回一个void。更常见的是:typedef void (&func_vii)(int,int); MyTemplateClass<func_vii localfunc> {... -
@Michael:
void(int,int)是函数类型的规范:接受两个int参数并且没有返回值的函数的类型。在这种情况下,它被用作带有类型参数的模板的参数,可能在某处声明为template <typename Function> class MyTemplateClass;。