1.std::initializer_list
模板类,可将其用于构造函数的参数。尤其是用于STL模板,将STL容器初始化为一系列值。
1.1 如果类有用initilizer_list作为参数的构造函数,如果使用花括号初始化,将调用该方法。如果类没有用initilizer_list作为参数的构造函数,那么{}也将使用普通的构造函数。
std::vector<int> vi(10); //调用普通版本的构造函数
std::vector<int>vi{10};//调用initilizer_list构造函数
1.2 initilizer_list元素的类型都相同,可以进行隐式转换,但是不可以缩窄。
1.3 什么时候使用
1.4 怎么使用?
2.using 为模板指定别名
3.左值和右值
可以被取地址的是左值;不可以取地址的是右值
右值:除了C-style字符串的字面量 、表达式的值 、返回值的函数
int && a = 1;//将右值被右值引用起来,右值将会存在一个位置。可以对a取地址
4.移动语义和移动构造函数
4.1 移动构造函数不可以在参数生命中用const
4.2 移动构造函数怎么选择
4.3 强制移动–可以这样做的要求是本身包含支持移动类型的成员函数
5.default和delete方法
default表示采用系统的默认版本
delete表示禁止该函数调用
6.委托构造函数 、继承构造函数
7.override和final
override表明该函数是一个覆盖
final 表明该函数禁止子类覆盖
8.lambda函数
8.1lambda怎么编写
8.2lambda为何要使用?
距离
简洁
效率
功能
9.函数包装器
10.可变参数模板
10.1 模板和函数参数包