C++11特性

C++ 11 的新特性有哪些?

  1. auto:auto 不能用来声明函数的返回值。

  2. Range-based for loops (基于范围的 for 循环)。

  3. nullptr

  4. Override 和 final:

    override,表示函数应当重写基类中的虚函数。

    final,表示派生类不应当重写这个虚函数。

  5. Strongly-typed enums 强类型枚举:

    enum class Options {None, One, All}; Options o = Options::All;
  6. Lambdas

  7. 非成员 begin() 和 end()

  8. Move semantics (Move 语义)

  9. thread:相信 Linux 程序员都用过 Pthread, 但有了 C11 的 std::thread 以后,你可以在语言层面编写多线程程序了,直接的好处就是多线程程序的可移植性得到了很大的提高,所以作为一名 C 程序员,熟悉 C++11 的多线程编程方式还是很有益处的。

    int n = 0; std::thread t1; // t1 is not a thread std::thread t2(f1, n + 1); // pass by value std::thread t3(f2, std::ref(n)); // pass by reference std::thread t4(std::move(t3)); // t4 is now running f2(). t3 is no longer a thread t2.join(); t4.join(); std::cout << "Final value of n is " << n << '\n';
  10. recursive_mutex

    std::recursive_mutex 与 std::mutex 一样,也是一种可以被上锁的对象,但是和 std::mutex 不同的是,std::recursive_mutex 允许同一个线程对互斥量多次上锁(即递归上锁),来获得对互斥量对象的多层所有权,std::recursive_mutex 释放互斥量时需要调用与该锁层次深度相同次数的 unlock(),可理解为 lock() 次数和 unlock() 次数相同,除此之外,std::recursive_mutex 的特性和 std::mutex 大致相同。

  11. std::time_mutex 介绍

    std::time_mutex 比 std::mutex 多了两个成员函数,try_lock_for(),try_lock_until()。