当前位置:   article > 正文

C++11:新特性(总结+实例)_c++11新特性

c++11新特性

目录

1、自动类型推断(auto)

2、范围for循环(range-based for loop)

3、基于范围的循环支持迭代器

4、nullptr

5、lambda表达式

6、智能指针(smart pointers)

7、原始字符串字面量(raw string literals)

9、空函数(nullptr_t)

10、委托构造函数(delegating constructors)


C++11是C++语言的一个重要版本,引入了许多新的特性和语法改进,使得C++编程更加方便、高效和安全。下面是一些C++11的新特性和实例的详解。

1、自动类型推断(auto)

C++11引入了auto关键字,用于自动推断变量的类型。这样可以简化代码,减少类型重复。

  1. auto x = 10; // x的类型被推断为int
  2. auto y = 3.14; // y的类型被推断为double
2、范围for循环(range-based for loop)

范围for循环可以在遍历容器或数组时更加简洁和直观。

  1. std::vector<int> nums = {1, 2, 3, 4, 5};
  2. for (auto num : nums) {
  3.     std::cout << num << " ";
  4. }
  5. // 输出:1 2 3 4 5
3、基于范围的循环支持迭代器

范围for循环也可以用于遍历支持迭代器的对象。

  1. std::string str = "Hello, World!";
  2. for (auto c : str) {
  3.     std::cout << c << " ";
  4. }
  5. // 输出:H e l l o ,   W o r l d !
4、nullptr

nullptr是一个新的空指针常量,可以用于取代NULL或0,提高代码的可读性和类型安全性。

int* p = nullptr;
5、lambda表达式

lambda表达式允许我们在代码中定义匿名函数,简化了函数对象的使用。

  1. std::vector<int> nums = {1, 2, 3, 4, 5};
  2. std::for_each(nums.begin(), nums.end(), [](int num) {
  3.     std::cout << num << " ";
  4. });
  5. // 输出:1 2 3 4 5
6、智能指针(smart pointers)

C++11引入了三种智能指针:shared_ptr、unique_ptr和weak_ptr,用于管理动态分配的内存,避免内存泄漏和悬空指针的问题。

  1. std::shared_ptr<int> p1(new int(10));
  2. std::unique_ptr<int> p2(new int(20));
  3. std::weak_ptr<int> p3 = p1;
  4. std::cout << *p1 << " " << *p2 << std::endl;
  5. // 输出:10 20
7、原始字符串字面量(raw string literals)

原始字符串字面量可以用于在字符串中包含特殊字符,而无需进行转义。

  1. std::string str = R"(C:\Windows\System32\)";
  2. std::cout << str << std::endl;
  3. // 输出:C:\Windows\System32\

8、强类型枚举(strongly-typed enum)
强类型枚举可以限制枚举类型的作用域,避免了枚举常量的命名冲突。

  1. enum class Color { Red, Green, Blue };
  2. enum class Size { Small, Medium, Large };
  3. Color color = Color::Red;
  4. Size size = Size::Medium;
9、空函数(nullptr_t)

空函数是一个新的类型nullptr_t,可以用于表示空函数指针。

  1. void func(nullptr_t) {
  2.     std::cout << "Null function pointer" << std::endl;
  3. }
  4. func(nullptr);
  5. // 输出:Null function pointer
10、委托构造函数(delegating constructors)

委托构造函数允许一个构造函数调用另一个构造函数,减少了重复的代码。

  1. class MyClass {
  2. public:
  3.     MyClass() : MyClass(0) {}
  4.     MyClass(int x) : x_(x) {}
  5. private:
  6.     int x_;
  7. };

以上是C++11的一些新特性和实例的详解,这些特性使得C++编程更加方便、高效和安全。学习和掌握这些特性可以提高代码的质量和开发效率。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号