【发布时间】:2010-09-20 11:32:40
【问题描述】:
在 C 中使用 qsort 我们传入一个比较函数,例如
int cmp(const void*, const void*);
qsort 的原型需要 int (* )(const void* , const void*),所以我们调用:
qsort(..., cmp);
但调用同样有效:
qsort(..., &cmp);
如果我们在 C++ 中传入一个静态成员函数,这就是我们必须做的。 Kernighan & Ritchie (2nd Edition, 5.11 "Pointers To Functions" p119) 指出“由于 [cmp] 已知是一个函数,因此 & 运算符不是必需的,就像在数组名称之前不需要它一样。 "
有没有其他人对此感到有点不舒服(尤其是关于类型安全)?
【问题讨论】:
标签: c++ c function-pointers