1.自动类型推导(Auto):允许编译器推导变量的类型,使代码更加简洁。
auto x = 5; // x 的类型将被推导为<a target="_blank" href="https://www.huizhanii.com/tag/int" title="View all posts in int" rel="noopener">int</a>
2.范围-based for 循环:简化了对容器元素的遍历。
std::vector<int> numbers = {1, 2, 3, 4, 5};
for (const auto& num : numbers) {
// 使用 num
}
3.智能指针:引入了 std::shared_ptr 和 std::unique_ptr 等智能指针,用于管理动态分配的内存,帮助防止内存泄漏。
std::shared_ptr<int> sharedPtr = std::make_shared<int>(42);
4.Lambda 表达式:允许在函数内部定义匿名函数,提高代码可读性和灵活性。
auto add = [](int a, int b) { return a + b; };
5. nullptr:引入了空指针常量 nullptr,用于替代传统的空指针 NULL。
int* ptr = nullptr;
6.强制类型转换(Type Casting):引入了 static_cast、dynamic_cast、const_cast、reinterpret_cast 等更安全和灵活的类型转换操作符。
double x = 3.14;
int y = static_cast<int>(x);
7. 右值引用和移动语义:支持通过右值引用实现移动语义,提高了对临时对象的处理效率。
std::vector<int> getVector() {
// 返回一个临时 vector
return std::vector<int>{1, 2, 3};
}
std::vector<int> numbers = getVector(); // 使用移动语义
8.新的容器和算法:引入了新的容器,如 std::unordered_map、std::unordered_set,以及一些新的算法。
std::unordered_map<int, std::string> myMap = {{1, "one"}, {2, "two"}};
9.线程支持(std::thread):提供了原生的多线程支持,使得并发编程更加方便。
#include <thread>
void myFunction() {
// 线程执行的代码
}
int main() {
std::thread t(myFunction);
t.join(); // 等待线程结束
return 0;
}
本文章已结束,如转载请注明:汇站网 » C++11 引入了许多新特性,让编程变得更加强大和便捷