0、本章内容:
移动语义和右值引用。
Lambda表达式。
包装器模板function。
可变参数模板。
1、复习前面介绍过的C++11功能:
1.1 新类型
1.2 统一的初始化
1.3 声明
1.4 智能指针
1.5 异常规范方面的修改
1.6 作用域内枚举
1.7 对类的修改
1.8 模板和STL方面的修改
1.9 右值引用
2、移动语义和右值引用:
2.1 为什么需要移动语义
2.2 一个移动示例
2.3 移动构造函数解析
移动构造参数不能是const,因为移动改变了源对象。
2.4 赋值
移动赋值参数不能是const,因为移动改变了源对象。
2.5 强制移动
move()函数。
没有移动则用复制,没有复制则报错。
3、新的类功能:
3.1 特殊的成员函数
移动和复制,其一定义,另一则非默认。
3.2 默认的方法和禁用的方法
default创建默认方法,delete禁用方法。
default只能用于特殊成员函数。
3.3 委托构造函数
3.4 继承构造函数
使得所有重载版本都可用。
3.5 管理虚方法:override和final
参数列表不同是隐藏,参数列表相同是覆盖。
隐藏调用声明类型,覆盖调用实际类型,派生类找不到就去基类找。
并非关键字,可用作常规标识符。
4、Lambda函数:
4.1 比较函数指针、函数符和Lambda函数
generate随机生成,count_if计算总数。
仅当Lambda表达式完全由一条返回语句组成时,自动类型推断才管用。
4.2 为何会使用Lambda
5、包装器:
5.1 包装器function及模板的低效性
5.2 修复问题
5.3 其他方式
6、可变参数模板:
6.1 模板和函数参数包
6.2 展开参数包
6.3 在可变参数模板函数中使用递归
7、C++11新增的其他功能:
7.1 并行编程
7.2 新增的库
7.3 低级编程
7.4 杂项
8、语言变化:
8.1 Boost项目
8.2 TR1
8.3 使用Boost
9、接下来的任务:
null。
10、总结:
null。