函数对象(Function Object)
Dliang 发表于14:10:14 2006-08-25函数对象是使用函数的另一个选择,它可以完成一些函数完成不了的工作。
函数对象在表面上很复杂,难以理解。但是它有一些有点:
1、函数对象是一种“聪明的函数”(smart functions),我们可以利用它除了“()”操作符以外更多的功能。比如,它可以有自己的成员函数和成员变量,利用这一点我们可以让同一个函数对象在不同的时候有不同的行为,我们也可以在使用它之前对它进行初始化。
2、传统的函数只能使用不同的名字来提供对不同类型参数的处理。但是,函数对象可以用相同的名字来提供对不同类型对象的处理。这也是泛型编程的特点。所以,我们使用同样的函数对象,为其初始化为不同的类型,就可以把它当作算法的操作函数使用了。例如,我们要为不同类型的容器提供排序算法,编写一个支持不同类型容器的函数对象就可以了。
3、函数对象被编译器更好地优化了,因此使用它会带来效率的提升。

