1.auto、decltype
用于自动推断类型
2.自动追踪返回值类型
3. 列表初始化和列表方式类型收窄
//列表初始化
vector<int>res{1,2,3,4,5};
//防止类型收窄
int a = 1024;
char b = a;//可以执行
char b{a};//报错
4.基于范围的for循环
vector<int>res{1,2,3,4};
for(auto& it :res){
it *=2;
cout<<it<<" ";
}
cout<<endl;
for(auto it : res){
cout<<it<<" ";
}
5.静态断言---static_assert()
assert()在C语言中,条件为真继续执行,条件为假,直接报错,在运行时检测。
static_assert(常量表达式,“提示的字符串”);
6.noexcept 不允许函数抛出异常
void test() noexcept
{
cout << "ok" << endl;
int i = 1;
if (i == 1) {
throw;
}
}
7.nullptr
浅谈 C++中的 NULL 和 nullptr_c++ null nullptr_Hoshino373的博客-CSDN博客
之前NULL和0是一样的,但是C++有函数重载后,继续使用NULL会导致问题。
因此引入nullptr,来解决函数重载时的问题。
8. 强类型枚举
9.左值引用 | 右值引用
int & x1 = 7;//no
const int& x2 = 11;//ok
左值:可以在内存中一个存储空间的表达式,他可以出现在赋值运算符的左侧“=”;