C++11 引入了许多新特性,使得 C++ 语言更加现代化、易用且高效。以下是一些主要的 C++11 特性:
- 自动类型推导:使用
auto
关键字可以自动推导变量类型,减少了类型声明的冗余。 - Lambda 表达式:允许在代码中定义匿名函数,方便进行函数式编程。
- 智能指针:如
std::unique_ptr
、std::shared_ptr
和std::weak_ptr
,提供了对动态内存的更安全的管理。 - 范围 for 循环:简化了遍历容器元素的代码。
- 初始化列表:简化了对象的初始化过程。
- 右值引用和移动语义:提高了性能,尤其是在处理临时对象时。

C++11 Logo
了解更多关于 C++11 特性的信息,可以访问本站 C++11 特性详细介绍。
自动类型推导
自动类型推导是 C++11 中最引人注目的特性之一。它允许编译器自动推导变量的类型,从而减少了代码的冗余。
auto x = 10; // x 的类型被推导为 int
auto y = 3.14; // y 的类型被推导为 double
Lambda 表达式
Lambda 表达式允许在代码中定义匿名函数,这使得代码更加简洁和易于理解。
auto lambda = [](int a, int b) -> int { return a + b; };
int result = lambda(3, 4); // result 被设置为 7
智能指针
智能指针提供了对动态内存的更安全的管理,避免了内存泄漏的问题。
std::unique_ptr<int> ptr(new int(10));
范围 for 循环
范围 for 循环简化了遍历容器元素的代码。
std::vector<int> vec = {1, 2, 3, 4, 5};
for (int i : vec) {
std::cout << i << std::endl;
}
初始化列表
初始化列表简化了对象的初始化过程。
std::vector<int> vec{1, 2, 3, 4, 5};
右值引用和移动语义
右值引用和移动语义提高了性能,尤其是在处理临时对象时。
int a = 10;
int b = 20;
std::swap(a, b); // 使用移动语义交换值