C++模板中函数参数问题

2025-05-14 03:24:54
推荐回答(3个)
回答1:

void (*visit) (BinTreeNode *t)
用左-右-左读法:
1 visit ,往左读,是 *,于是 visit 是指针
2 再接着往右读,是 )
3 再往左,是 (
4 再往右是 (BinTreeNode *t),括号中有变量声明,是函数参数定义
5 再往左读,是 void,函数返回值

所以,visit 是一个指针,指向一个函数,函数只有一个 BinTreeNode * 类型的参数,返回值是 void

所有复杂的声明都可以用左-右-左来读其意义,也只有这样读。

回答2:

void (*visit) (BinTreeNode *t)这个参数应该怎么理解

举例说明:

函数指针
void (*test)(int a);
这是一个函数指针,返回值类型为void,参数类型为int

如果理解了这个
那么
void (*visit) (BinTreeNode *t)
只不过参数类型是BinTreeNode *t

BinTreeNode这也是一个类型,模板类型

回答3:

这个是指向函数的指针类型,这个函数的返回值为空,参数是BinTreeNode *t