c++11有哪些新特性并简单举例

C++11 引入了许多新特性,显著增强了语言的功能性和可用性。以下是一些关键的新特性及其简单示例:

  1. Auto 关键字:自动类型推导。

    auto x = 5; // x 的类型自动推导为 int  
    auto y = 3.14; // y 的类型自动推导为 double
  2. Nullptr:替代 NULL 的指针字面量。

    int* p = nullptr;
  3. 范围基的 for 循环:更简洁地遍历容器。

    std::vector<int> vec = {1, 2, 3, 4, 5};  
    for (int x : vec) {  
        std::cout << x << std::endl;  
    }
  4. Lambda 表达式:定义匿名函数对象。

    auto lambda = [](int x) { return x * x; };  
    std::cout << lambda(5) << std::endl; // 输出 25
  5. 类型别名(using):更灵活的类型定义。

    using StringList = std::vector<std::string>;  
    StringList list = {"Hello", "World"};
  6. 智能指针:std::shared_ptr 和 std::unique_ptr。

    std::shared_ptr<int> sp = std::make_shared<int>(10);  
    std::unique_ptr<int> up = std::make_unique<int>(20);
  7. 右值引用和移动语义:提高性能,减少不必要的拷贝。

    std::vector<int> createVector() {  
        return std::vector<int>{1, 2, 3, 4, 5};  
    }  
    std::vector<int> vec = createVector(); // RVO(返回值优化)和移动语义
  8. 显式类型转换(static_cast, dynamic_cast, const_cast, reinterpret_cast):更安全的类型转换。

    double d = 3.14;  
    int i = static_cast<int>(d);
  9. 委托构造和默认构造:简化构造函数的定义。

    class MyClass {  
    public:  
        MyClass() = default;  
        MyClass(int x) : value(x) {}  
        MyClass(const MyClass& other) = delete;  
    private:  
        int value;  
    };
  10. 初始化列表:统一的初始化方式。

    std::vector<int> vec = {1, 2, 3, 4, 5};  
    int arr[] = {1, 2, 3, 4, 5};
  11. 标准库增强:包括线程库、正则表达式库、新的随机数库等。

    std::thread t([](){  
        std::cout << "Hello from thread" << std::endl;  
    });  
    t.join();
  12. 原生字符串字面量:避免转义字符的麻烦。

    std::string path = R"(C:\Users\Name\Documents)";

这些特性使得 C++11 相对于之前的版本更加现代化和易用,提升了开发效率和程序性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值