C++11 引入了许多新特性,使得 C++ 语言更加现代化、易用且高效。以下是一些主要的 C++11 特性:

  • 自动类型推导:使用 auto 关键字可以自动推导变量类型,减少了类型声明的冗余。
  • Lambda 表达式:允许在代码中定义匿名函数,方便进行函数式编程。
  • 智能指针:如 std::unique_ptrstd::shared_ptrstd::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); // 使用移动语义交换值