这种方法能够奏效的关键在于for_each()函数不必假设它的第三个参数是一个函数。 它只是假定第三个参数是可以用正确的参数调用的东西。 与函数一样,适当定义的对象同样适用,并且通常比函数更好。例如,内联类的应用程序运算符要比内联作为指向函数的指针传递的函数更容易。 因此,函数对象通常比普通函数执行得更快。 具有应用程序运算符(§11.9)的类的对象称为函数类对象、函数对象或者functor。
[Stroustrup, C++ 3rd edition, 18.4-last paragraph]
我一直认为操作符 ( ) 的调用就像运行时的函数调用。 它与普通函数调用有什么区别?
为什么内联应用程序运算符比普通函数更容易?
它们如何比函数调用更快?