C++11 引入了许多新的特性和改进,使得 C++ 编程语言更加现代和强大。以下是一些重要的 C++11 特性:
1. 自动类型推导 (auto)
在 C++11 中,可以使用 auto
关键字来自动推导变量的类型。这简化了代码并减少了错误。
auto x = 10; // x 的类型被推导为 int
2. 列表初始化
现在可以使用花括号 {}
来初始化容器,例如 std::vector
。
std::vector<int> v = {1, 2, 3, 4, 5};
3. Lambda 表达式
Lambda 表达式允许你定义匿名函数,这在处理回调和事件处理器时非常有用。
auto lambda = []() { std::cout << "Hello, World!" << std::endl; };
lambda();
4. 智能指针
C++11 引入了三种智能指针:std::unique_ptr
、std::shared_ptr
和 std::weak_ptr
,用于自动管理内存。
std::unique_ptr<int> p(new int(10));
5. 右值引用
右值引用允许你直接操作右值,并提高性能。
int a = 10;
int& ra = a; // 左值引用
int&& rb = std::move(a); // 右值引用
6. 移动语义
C++11 引入了移动语义,允许你通过移动资源而不是复制来提高性能。
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2(std::move(v1)); // 移动语义
7. 异常处理改进
C++11 对异常处理进行了改进,包括新的 noexcept
关键字和 std::exception_ptr
。
void f() noexcept {}
void g() {}
8. 新的库功能
C++11 引入了许多新的库功能,例如 <thread>
、<atomic>
和 <chrono>
。
#include <thread>
std::thread t([]() { std::cout << "Hello, World!" << std::endl; });
t.join();
更多关于 C++11 的信息,请访问我们的 C++11 教程。
# C++11 新特性概览
C++11 引入了许多新的特性和改进,使得 C++ 编程语言更加现代和强大。以下是一些重要的 C++11 特性:
## 1. 自动类型推导 (auto)
在 C++11 中,可以使用 `auto` 关键字来自动推导变量的类型。这简化了代码并减少了错误。
```cpp
auto x = 10; // x 的类型被推导为 int
2. 列表初始化
现在可以使用花括号 {}
来初始化容器,例如 std::vector
。
std::vector<int> v = {1, 2, 3, 4, 5};
3. Lambda 表达式
Lambda 表达式允许你定义匿名函数,这在处理回调和事件处理器时非常有用。
auto lambda = []() { std::cout << "Hello, World!" << std::endl; };
lambda();
4. 智能指针
C++11 引入了三种智能指针:std::unique_ptr
、std::shared_ptr
和 std::weak_ptr
,用于自动管理内存。
std::unique_ptr<int> p(new int(10));
5. 右值引用
右值引用允许你直接操作右值,并提高性能。
int a = 10;
int& ra = a; // 左值引用
int&& rb = std::move(a); // 右值引用
6. 移动语义
C++11 引入了移动语义,允许你通过移动资源而不是复制来提高性能。
std::vector<int> v1 = {1, 2, 3};
std::vector<int> v2(std::move(v1)); // 移动语义
7. 异常处理改进
C++11 对异常处理进行了改进,包括新的 noexcept
关键字和 std::exception_ptr
。
void f() noexcept {}
void g() {}
8. 新的库功能
C++11 引入了许多新的库功能,例如 <thread>
、<atomic>
和 <chrono>
。
#include <thread>
std::thread t([]() { std::cout << "Hello, World!" << std::endl; });
t.join();
更多关于 C++11 的信息,请访问我们的 C++11 教程。