C++11 核心特性详解
C++ 发展简史
C++ 最初由 Bjarne Stroustrup 在 1979 年提出,作为 C 语言的扩展,引入了面向对象编程的概念。1998 年第一个国际标准发布(C++98),2003 年修复缺陷后称为 C++03。经过长达 10 年的准备,2011 年第二个标准正式落地,定名为 C++11。这不仅是修补,更像是一次脱胎换骨的升级。
C++11 的意义
相比于 C++98/03,C++11 引入了超过 140 个新特性,主要改进体现在:
- 语法更简洁:自动类型推导、范围 for 循环等让代码直观。
- 性能提升:右值引用和移动语义减少不必要的拷贝。
- 并发支持:标准库首次引入多线程接口。
- 安全性增强:
nullptr、显式删除函数等机制使代码更健壮。
统一的列表初始化
C++98 的传统写法
在 C++98 中,花括号 {} 主要用于数组或聚合类型的初始化:
// 数组初始化
int arr[] = {1, 2, 3};
int arr1[6] = {0};
// 结构体初始化
struct Point {
int x, y;
};
Point p = {1, 2};
C++11 的统一列表初始化
C++11 扩大了 {} 的使用范围,使其可用于所有内置类型和用户自定义类型。无论是否带等号 =,本质都是列表初始化。
内置类型对比:
// C++98
int x = 1;
int a1[] = {1, 2, 3};
// C++11
int z = {3};
int w{4};
int a2[]{1, 2, 3}; // 可以不写赋值符号
自定义类型:


