unary_funciton可作为一个一元函数对象(又叫仿函数)的基类,它只定义了参数和返回值的类型,本身并不重载()操作符,这个任务交给派生类去完成。仿函数是使一个类的使用看上去像一个函数。其实现是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。
unary_funciton可以作为一个一元函数对象(又叫仿函数)的基类,它只定义了参数和返回值的类型,本身并不重载()操作符,这个任务交给派生类去完成。
有些时候,我们在写代码时会发现,某些功能实现的代码会不断的在不同的成员函数中用到,可又不好将这些代码独立出来成为类的一个成员函数,但又很想复用这些代码。写一个公共的函数是一个解决方法,不过函数用到的一些变量,就可能成为公共的全局变量。而且为了复用这么一片代码,就要单立出一个函数,也不好维护,这时就可以用仿函数了。写一个简单类,除了那些维护一个类的成员函数外,就只是实现一个operator(),在类实例化时,就将要用的,非参数的元素传入类中。这样就免去了对一些公共变量全局化的维护。同时,又可以使那些代码独立出来,以便下次复用。而且,这些仿函数还可以用关联、聚合、依赖的类之间的关系,与用到他们的类组合在一起,这样有利于资源的管理(这点可能是它相对于函数最显著的优点了)。如果再配合上模板技术和policy编程思想,就更是威力无穷了,大家可以慢慢的体会。
有时仿函数的使用是为了函数拥有类的性质,以达到安全传递函数指针,依据函数生成对象,甚至是让函数之间有继承关系,对函数进行运算和操作的效果。比如set就使用了仿函数less ,而less继承的binary_function,就可以看作是对于一类函数的总体声明了,这是函数做不到的。
延伸阅读:
什么是派生类?
利用继承机制,新的类可以从已有的类中派生。那些用于派生的类称为这些特别派生出的类的“基类”。
基类说明:在C++中要定义的新的数据类型不仅拥有新定义的成员,而且还同时拥有旧的成员,我们称已存在的用来派生新类的类为C++基类,又称为父类。
基类表:基类表中存放各个基类名称
基类说明符:基类类体中类成员的访问说明符
文章标题:unary_function的作用是什么,发布者:小编,转载请注明出处:https://worktile.com/kb/p/40951