c++11新增内容

记录一下c++11新特性方便以后回忆

1.nullptr (对标NULL)

2.auto ,decltype(根据表达式推断类型,表达式不执行)

decltype(func()) sum = 5; // sum的类型是函数func()的返回值的类型int, 但是这时不会实际调用函数func()
int a = 0;
decltype(a) b = 4; // a的类型是int, 所以b的类型也是int

PS: c++14中:decltype(auto)是C++14新增的类型指示符,可以用来声明变量以及指示函数返回类型。在使用时,会将“=”号右边的表达式替换掉auto,再根据decltype的语法规则来确定类型。

int a = 4;
decltype(auto) b = a; // => decltype(a) b = a;

3.拖尾(后置)返回类型

4.类似于python的区间for遍历

5.初始化列表 (std::initializer_list)

6.外部模板

7.默认模板参数

8.类型别名模板 using

9.委托构造,继承构造(using A::A)

10.Lambda 表达式 [ caputrue list ] ( params list ) opt -> ret { body; };

caputrue list:
[var]:表示值传递方式捕捉变量var
[=]:表示值传递方式捕获所有父作用域中的变量(包括this)
[&var]:表示引用传递捕捉变量var
[&]:表示引用传递捕捉所有父作用域中的变量(包括this)
[this]:表示值传递方式捕捉当前的this指针

11.std::array

12.std::forward_list

13.无序容器(std::unordered_map / std::unordered_multimap 和 std::unordered_set / std::unordered_multiset)

14.智能指针(unique_ptr,shared_ptr, weak_ptr)

15.long long

16.元组 std::tuple (#include )

17.正则表达式

18.std::to_string()函数

19.线程支持,原子操作库

20.constexpr (const 和 constexpr 变量之间的主要区别在于:const 变量的初始化可以延迟到运行时,而 constexpr 变量必须在编译时进行初始化)

21.原始(raw)字符串 <R"( ------ )">,其中------里面的字符串全部看成无特殊意义的字符串(无视转义字符等其他)

22.C++11起,新增 alignof 和 alignas
alignof 主要用于获取内存对齐的大小
alignas 主要用于设置内存对齐的大小

  1. override、final对多态的进一步管理<限定>
posted @ 2021-11-24 19:01  gonghw403  阅读(61)  评论(0编辑  收藏  举报