前言
面试被问到了,只回答了auto遍历,其他学过但很少用,没想起来,很尴尬。
做个记录
新特性
1.类型推导
auto
自动推导出变量的类型
decltype
auto只能对变量进行类型推导,decltype 关键字是为了解决 auto 关键字只能对变量进行类型推导的缺陷而出现的。
格式:decltype(表达式)
编译器分析表达式并得到它的类型,却不实际计算表达式的值。
auto x = 1;
auto y = 2;
decltype(x+y) z;
2.区间迭代
能够用for(auto i:a)
来遍历vector、map等容器,使得写代码的时候不用考虑太多类型和边界的问题
3.nullptr
nullptr见上一篇博文,空指针要赋值为nullptr而不应该是NULL
4.初始化
统一用大括号
5.尖括号“>”
C++11 开始,连续的右尖括号将变得合法,并且能够顺利通过编译。
6.外部模板
7.lambda表达式
匿名函数
[ caputrue ] ( params ) opt -> ret { body; };
- capture是捕获列表;
- params是参数表;(选填)
- opt是函数选项;可以填mutable,exception,attribute(选填)
mutable说明lambda表达式体内的代码可以修改被捕获的变量,并且可以访问被捕获的对象的non-const方法。
exception说明lambda表达式是否抛出异常以及何种异常。
attribute用来声明属性。 - ret是返回值类型(拖尾返回类型)。(选填)
- body是函数体。