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,表明必须通过静态转换才能实现。
对于重载的运算符,无论是成员或非成员函数,都在匹配范围内。
相关文章推荐
- C++primer 第三章笔记 初稿
- C++primer 第十五章笔记 初稿
- C++primer 第十六章笔记 初稿
- C++primer 第七章笔记 初稿
- C++primer 第二章笔记 初稿
- C++primer 第十章笔记 初稿
- C++primer 第十三章笔记 初稿
- C++primer第五版笔记-第十四章重载运算与类型转换
- C++primer 第六章笔记 初稿
- C++primer 第四章笔记 初稿
- C++primer 第十一章笔记 初稿
- C++primer 第九章笔记 初稿
- C++primer 第五章笔记 初稿
- linux & C++Primer 学习笔记--预处理器的简单介绍
- C++primer第五版笔记-第七章类
- c++Primer学习笔记之一:程序的编译与执行
- Java编程思想笔记——第十四章&&第十五章
- C++Primer学习笔记第五章(5/18)表达式
- SQL Server 2008编程入门经典笔记(第十四章:事务和锁)
- Java编程思想笔记——第十四章 类型信息