您的位置:首页 > 编程语言 > C语言/C++

C++primer 第十四章笔记 初稿

2017-07-21 16:09 155 查看

14.1 函数调用运算符

基本情况

重载的运算符:()

该类的对象为函数对象,可以用作泛型算法的实参

与lambda表达式的关系

lambda表达式中的形参是函数对象的数据成员

lambda表达式中的捕获列表是函数对象的形参

lambda表达式很方便,当某个操作不经常使用又很简单时,可用lambda来代替函数对象

标准库中的函数对象

头文件:functional

模式:模板

注意点

在定义优先队列等适配器时,需同时声明队列的默认容器,且不加函数对象的调用运算符

在使用泛型算法时,需加函数对象的调用运算符

三种表达函数方式的整合

头文件:functional

关键字:function

函数的三种表达方式

普通函数

函数对象

lambda表达式

要求:function是模板,必须提供函数的有关信息(签名)

注:如果因为重载函数而出现二义性,可通过存储函数指针或生成一个lambda表达式完成。

14.2 类型转换运算符

基本情况

形式:operator type()

要求:可以转换成指针和引用,但不能直接转换成数组或函数。

注:类型转换不能过度定义

显示的类型转换

问题:没有定义相关操作的对象,可能通过类型转换产生意想不到的结果。

方法:在定义时注明explicit,表明必须通过静态转换才能实现。

对于重载的运算符,无论是成员或非成员函数,都在匹配范围内。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: