C++ 新特性 (C++11、C++14、C++17)

配套视频课程已更新完毕,大家可通过以下两种方式观看视频讲解:

关注公众号:爱编程的大丙,或者进入大丙课堂学习。

温馨提示:由于现在编译器版本都比较高,默认的使用的C++标准也比较高,相关源代码请基于 C++11 标准进行测试,否则会与实际结果有出入。


C++11


1. 稳定性和兼容性

  1. 原始字面量
  2. 超长整形 long long
  3. 类成员的快速初始化
  4. final 和 override
  5. 模板的优化
  6. 数值类型和字符串之间的转换
  7. 静态断言 static_assert
  8. noexcept

2. 易学和易用性

  1. 自动类型推导
  2. 基于范围的for循环
  3. 指针空值类型 - nullptr
  4. lambda表达式

3. 通用性能的提升

  1. 常量表达式修饰符 - constexpr
  2. 委托构造函数和继承构造函数
  3. 右值引用
  4. 转移和完美转发
  5. 列表初始化
  6. using的使用
  7. 可调用对象包装器、绑定器
  8. POD类型
  9. 默认函数控制 =default 与 =delete
  10. 扩展的friend语法
  11. 强类型枚举
  12. 非受限联合体

4. 安全性

  1. 共享智能指针

  2. 独占智能指针

  3. 弱引用智能指针

5. 多线程

  1. 处理日期和时间的chrono库

  2. C++线程类 thread

  3. 线程命名空间 this_thread

  4. call_once函数

  5. 线程同步之互斥锁 mutex

  6. 线程同步之条件变量

  7. 线程同步之原子变量 atomic

  8. 线程异步

  9. 异步线程池


C++14


C++14 主要目标是完成 C++11,修复缺陷并引入少量提升开发效率的特性。大部分更改是向后兼容的改进,没有引入破坏性变化。

  1. 二进制字面量
  2. 自定义字面量
  3. constexpr 限制放宽
  4. 泛型 Lambda 以及捕获变量的增强
  5. auto 和 decltype 的改进
  6. 聚合类成员初始化
  7. 变量模板
  8. 透明操作符函数对象
  9. 智能指针 unique_ptr 的优化
  10. 多线程之读写锁

C++17


  1. UTF-8字面量和十六进制浮点数字面量
  2. 嵌套的命名空间
  3. 属性增强
  4. 类型萃取
  5. 编译期判断语句 constexpr if
  6. if/switch 语句中的初始化器
  7. constexpr Lambda 和 捕获 *this 的拷贝
  8. 枚举的直接列表初始化
  9. 内联变量
  10. 结构化绑定
  11. 带有基类的聚合类
  12. 折叠表达式
  13. 带有 auto 类型的非类型模板参数
  14. 类模板参数推导
  15. 原始字节类型 - std::byte
  16. 将左值引用转换为常量引用 - std::as_const
  17. 万能调用神技 std::invoke
  18. 终极元组解包器 - std::apply / std::make_from_tuple
  19. 通用否定器 - std::not_fn
  20. std::map/set/unordered_map/unordered_set 的改进
  21. 类型安全的联合体 - std::variant
  22. 类型安全的任意类型容器 - std::any
  23. 薛定谔的盒子 - std::optional
  24. 字符串视图(非拥有视图)- string_view
  25. 并行算法
  26. 字符转换
  27. 智能指针的增强
  28. 透明比较利器 - std::owner_less
  29. 多线程之读写锁
  30. 搜索器
引用到评论
随便逛逛博客分类文章标签
复制地址关闭热评深色模式轉為繁體