这样做的关键原因是 for_each () 实际上并没有假设 它的第三个参数是一个函数。它只是假设它的第三个参数是可以用适当的参数调用的东西。一个适当定义的对象和一个函数一样——而且通常比一个函数更好。例如,内联类的应用程序运算符比内联作为函数指针传递的函数更容易。因此,函数对象通常比普通函数执行得更快。具有应用运算符(第 11.9 节)的类的对象称为类函数对象、仿函数或简称为函数对象。
[Stroustrup,C++ 第 3 版,18.4-最后一段]
我一直认为operator()调用就像在运行时调用函数一样。它与普通的函数调用有何不同?
为什么内联应用程序运算符比普通函数更容易?
它们比函数调用快多少?