在 C 中使用 qsort 我们传入一个比较函数,例如
int cmp(const void*, const void*);
qsort 的原型需要 aint (* )(const void* , const void*)
所以我们称之为:
qsort(..., cmp);
但调用同样有效:
qsort(..., &cmp);
如果我们在 C++ 中传入一个静态成员函数,这就是我们必须要做的。Kernighan & Ritchie (2nd Edition, 5.11 "Pointers To Functions" p119) 指出“由于 [cmp] 已知是一个函数,因此 & 运算符不是必需的,就像在数组名称之前不需要它一样。 "
有没有其他人对此感到有点不舒服(特别是关于类型安全)?