绑定器,函数对象, lambda表达式它们只能使用在一条语句中,如何实现复用,把他们的类型留下,这就是function类型的作用
看似函数对象干的事情函数指针都可以做,但是函数对象可以保存lambda表达式,绑定器绑定的函数对象,函数指针就办不到。
绑定器最多绑定20个参数
C++STL里面的bind1st和bind2nd只能用于二元函数对象,C++11提供的绑定器功能更加强大。
function只能接收一个类型,而绑定器可以给函数绑定参数。绑定器只能使用在语句当中,语句完了绑定器就需要重新书写,那么如何把绑定器的类型留下来呢?就需要综合使用bind和function
lambda表达式可以看作是函数对象的升级版
仅仅可以使用在泛型算法参数传递的过程中,在具有比较性质或自定义操作的优先级队列里面,自定义类型作为优先级队列里面的元素,而元素的比较方式就需要给它传递一个函数对象,传递函数对象最大的特点就是需要先定义一个类型
,这个类型定义以后就只会使用在优先级队列里面,优先级队列使用完后其他地方就再也用不到了。因此就没有必要需要一个函数对象还得定义一个类型出来,灵活性太差
shared_ptr和weak_ptr都是线程安全的,都可以使用在多线程环境下
多线程访问共享对象的安全问题就可以使用到强弱智能指针,因为shared_ptr可以在线程中检测资源的引用计数来侦测资源是否存活。
为什么需要给智能指针定义删除器?
因为智能指针的作用是能够保证资源绝对的释放,而智能指针默认的释放方式是delete ptr.而当智能指针托管的资源是数组时,释放资源时就需要加[ ] ,当智能指针管理的不是一块内存的资源,而是一个文件,释放文件的方式绝对不是通过delete来实现的,因此通过智能指针管理资源需要能够释放相应的资源,如何给智能指针自定义删除器来指导智能指针正确的释放资源,这就是删除器的作用。