Skip to content

C++11

C++11(ISO/IEC 14882:2011)是 C++ 历史上最具里程碑意义的版本,被称为"现代 C++"的起点。它在语言和标准库两个层面都带来了根本性的变革。

核心变革

语言层面

特性意义
auto 类型推导减少冗余的类型声明
右值引用与移动语义消除不必要的深拷贝,大幅提升性能
Lambda 表达式一等公民的闭包,简化 STL 算法使用
可变参数模板类型安全的变参函数,enable_if 等元编程基石
constexpr编译期计算能力的起点
nullptr类型安全的空指针常量
enum class作用域枚举,消除隐式转换
static_assert编译期断言
委托构造函数构造函数复用
用户定义字面量自定义 operator"" 语法糖
Range-based for简洁的容器遍历语法

标准库层面

组件意义
unique_ptr / shared_ptr / weak_ptr取代 auto_ptr,正确的资源所有权语义
std::thread / std::mutex / std::atomic首次标准化多线程支持
std::array固定大小数组,替代 C 风格数组
std::tuple异构容器
<chrono>类型安全的时间库
<regex>正则表达式
<random>高质量随机数
std::function类型擦除的通用可调用对象封装
std::reference_wrapper可拷贝的引用包装器
std::initializer_list列表初始化支持
std::begin / std::end统一遍历接口,支持数组和容器
std::ratio编译期有理数算术
无序容器unordered_mapunordered_set

为什么是分水岭

C++11 之前的 C++(C++98/03)和 C++11 之后的 C++ 在写法风格上有本质差异:

  • 移动语义改变了值传递的经济学——按值返回不再昂贵
  • Lambda 使算法优先于手写循环成为可能
  • auto 使迭代器和模板返回值不再是噩梦
  • 并发从"平台相关"变成了"语言保证"

编译器支持

编译器完整支持版本
GCC4.8.1+
Clang3.3+
MSVCVS 2015 (19.0)+

延伸阅读

从左侧侧边栏选择具体特性开始阅读,或直接从 auto 类型推导 开始。

基于 MIT 许可发布