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关键新特性:
完整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 转换函数