C++11:
- 自动类型推断(auto):可以根据表达式的类型自动推断变量类型。
- 范围for循环(range-based for loop):可以轻松遍历一个序列中的所有元素。
- Lambda表达式(lambda expressions):定义一个匿名的函数对象,可以在函数中使用捕获列表(capture list)捕获外部变量。
- 右值引用(rvalue references)和移动语义(move semantics):允许将对象的所有权和资源从一个对象转移到另一个对象,从而避免不必要的复制和内存分配。
- 智能指针(smart pointers):std::unique_ptr和std::shared_ptr用于管理动态内存,可以自动释放对象并避免内存泄漏。
- std::thread和std::mutex:C++11添加了线程支持,包括线程对象和互斥锁对象。
- constexpr:可以在编译时计算表达式的值,以提高程序的性能。
- nullptr:表示空指针,替代了以前的NULL宏。
- Unicode字符串字面量:可以使用u8、u、U和L前缀表示不同的Unicode字符串字面量。
C++14:
- 泛型lambda表达式(generic lambda expressions):lambda表达式现在可以使用auto作为参数类型,并且可以在函数体内定义函数模板。
- 变长模板参数(variadic templates):函数模板和类模板可以接受可变数量的参数。
- std::make_unique:可以创建std::unique_ptr对象。
- 二进制字面量(binary literals):可以使用0b或0B前缀表示二