我在维基百科上找到了这段代码
class compare_class {
public:
bool operator()(int A, int B) const {
return A < B;
}
};
...
// Declaration of C++ sorting function.
template <class ComparisonFunctor>
void sort_ints(int* begin_items, int num_items, ComparisonFunctor c);
...
int main() {
int items[] = {4, 3, 1, 2};
compare_class functor;
sort_ints(items, sizeof(items)/sizeof(items[0]), functor);
}
起初我想知道 A 和 B 参数是如何传递给 operator()(int A, int B) 的,当在 sort_ints 中提到函子时甚至没有任何括号。
然后我发现 A 和 B 被传递给 sort_ints 函数内的函数对象。但是,sort_ints 的声明不应该有 'ComparisonFunctor* * * c' 而不是 'ComparisonFunctor c',因为它正在接收函数的地址?
在 sort_ints 函数内部,对函子的函数调用会像这样吗?
functor(*begin_items, *(begin_items+1));