16.5 函数对象
很多STL算法都使用函数对象——函数符。
### 函数符是可以以函数方式与( )结合使用的任意对象。
### 这包括函数名、指向函数的指针和重载了( )运算符的类对象(即定义了
### operator()()的类)
重载的( )运算符使得能够像使用函数那样使用对象。
### 对于for_each函数,它的第三个参数可以是常规函数,也可以是函数符
### 这涉及到该参数的声明问题。
### 事实上该参数使用了模板来解决声明函数指针时涉及到的需要声明参数类型而容器可包含任意类型的
### 矛盾。
###
template<class InputIterator, class Function> Function for_each(InuptIterator first, InputIterator last, Function f);
### 对于不同的函数调用,Function参数可以表示具有重载的( )运算符的类类型,或是函数类型。
### 最终,for_each( )代码将具有一个使用f( )的表达式。
- 实参是函数指针,而f( )调用该函数
- 实参是对象,而f( )将等价于拥有重载( )运算符的对象调用此重载方法