C++11
已经出来很久了,网上也早有很多优秀的C++11
新特性的总结文章,所以本文就是对带你了解一下C++11
的一些新特性。
C++
是一个拥有用户群体相当大的语言,同时也在多个领域使用的语言。从 C++98
的出现到 C++11
的正式定稿经历了长达十年多之久的积累。
C++11
是 C++
的第二个主要版本(前一个是 C++98 而后一个是 C++17,C++14则是C++11的一次小的改进 ),并且是从 C++98
起的最重要更新。它引入了大量更改,标准化了既有实践,并改进了对 C++
程序员可用的抽象。
C++14/17
则是作为对 C++11
的重要补充和优化, C++20
则将这门语言领进了现代化的大门,所有这些新标准中扩充的特性,给 C++
这门语言注入了新的活力。
C++11
是对目前C++
语言的扩展和修正, C++11
不仅包含核心语言的新技能,而且扩展了C++
的标准程序库(STL) ,并入了大部分的C++ Technical Report 1
(TR1) 程序库(数学的特殊函数除外)。
C++11关键新特性:
核心语言功能特性
- auto 与 decltype
- 预置与弃置的函数
- final 与 override
- 尾随返回类型
- 右值引用
- 移动构造函数与移动赋值运算符
- 有作用域枚举
- constexpr 与字面类型
- 列表初始化
- 委托与继承的构造函数
- 花括号或等号初始化器
- nullptr
- long long
- char16_t 与 char32_t
- 类型别名
- 变参数模板
- 推广的(非平凡)联合体
- 推广的 POD (平凡类型与标准布局类型)
- Unicode 字符串字面量
- 用户定义字面量
- 属性
- lambda 表达式
- noexcept 说明符与 noexcept 运算符
- alignof 与 alignas
- 多线程内存模型
- 线程局部存储
- GC 接口
- 范围 for (基于 Boost 库)
- static_assert (基于 Boost 库)
库功能特性
头文件
<typeindex> <type_traits> <chrono> <initializer_list> <tuple> <scoped_allocator> <cstdint> <cinttypes> <system_error> <cuchar> <array> <forward_list> <unordered_set> <unordered_map> <random> <ratio> <cfenv> <regex> <atomic> <thread> <mutex> <future> <condition_variable>
库功能特性
- 原子操作库
- emplace() 与其他遍及既存标准库所有部分的右值引用使用
- std::unique_ptr
- std::move_iterator
- std::initializer_list
- 有状态及有作用域分配器
- std::forward_list
- chrono 库
- ratio 库
- 新算法
- Unicode 转换平台
- thread library
- std::exception_ptr
- std::error_code 与 std::error_condition
- 迭代器改进:
- std::begin
- std::end
- std::next
- std::prev
- Unicode 转换函数