[英]Strange function
我在c ++中有一个函数声明,需要知道它是如何工作的:
template<class x>
int fun(x, x(*)(x*) );
第一个arg是类型x的对象。 以及如何描述第二个?
那是一个模板函数的声明,该函数返回一个整数并将x
用作参数,并指向一个返回x
并将x*
作为参数的函数的指针。
x(*)(x*)
部分是指“指向返回x
并将x*
作为参数的函数的指针”的部分。 第一个x
是返回类型, (*)
表示它是一个指向函数的指针(如果参数具有名称,则将其写为x(*argname)(x*)
),第三个x*
为只是争论。
调用它看起来像这样:
int f(int* iptr) { return something; }
fun(4, f); // no need for the explicit template parameter because it can be deduced
或更一般地
template<typename x>
x functionname(x* xptr) { return something; }
它将无法在C中工作,因为正如Daniel White在评论中所说,C没有模板。
第二种参数类型,其中x是一个类:
x(*)(x*)
表示“指向返回x
并采用x*
的函数的指针(*)
。例如:
class MyClass {};
MyClass doit(MyClass* arg) { return *arg; }
MyClass instance;
int result = fun(instance, doit);
它是指向返回x类型对象的函数的指针,并获得指向x类型指针的一个参数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.