繁体   English   中英

->“ methodName(void(* f)(const Datatype&));”中的void(* f)是什么意思?

[英]what does the void(*f) mean in -> “methodName( void (*f)(const Datatype&));”?

所以,我正在看教授给我的代码之一,但是我不知道void(* f)是什么意思,有人可以澄清吗?

template<class T>
void BinaryTree<T>::inorder( void (*f)(const T&), BTNode<T> *node ) const //<-- right here
{
  if (!node)
    return;
  inorder(f, node->left); 
  f(node->elem);
  inorder(f, node->right);
}

它是指向返回void并采用const T&参数的函数的指针。 指针的名称,如果f

void foo(const T&);   // a function declaration

void (*f)(const T&);  // function pointer

f = &foo;             // Can assign &foo to f, return type and signature match

在C ++中,指向将类型X映射到类型Y的函数的指针F表示为Y (*F)(X)

这是一个函数指针。 该函数获取函数指针作为参数。

但是由于这已经是模板c ++,所以我会尽量避免这种情况。 最好改用仿函数。 (但出于某种原因可能是其功能指针)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM