1. 自动类型推断(auto关键字):允许编译器根据变量的初始化表达式来推断变量的类型。2. 简化的循环控制语句(range-based for循环):可以方便地遍历容器中的元素。3. 列表初始化(uniform initialization):使用花括号{}来初始化变量,可以避免一些类型转换问题。4. 右值引用(rvalue reference)和移动语义(move semantics):提供了更高效的资源管理和转移。5. lambda表达式:允许在代码中定义匿名函数,方便在需要函数对象时使用。6. 并发编程库(std::thread、std::mutex等):提供了更方便的多线程编程支持。7. 智能指针(std::shared_ptr、std::unique_ptr等):智能指针是C++中用于管理动态内存的一种工具。在C++中,手动管理动态内存很容易出错,容易导致内存泄漏或者悬空指针的问题。智能指针通过封装指针并在适当的时候自动释放内存,解决了这些问题。C++11中引入了三种智能指针:std::unique_ptr、std::shared_ptr和std::weak_ptr。其中,std::unique_ptr是独占所有权的智能指针,它保证了只有一个指针可以访问该对象;std::shared_ptr是共享所有权的智能指针,它可以被多个指针共享,当最后一个指针离开作用域时,它会自动释放内存;std::weak_ptr是一种弱引用智能指针,它可以观测std::shared_ptr所管理的对象,但不会增加对象的引用计数。NULL是一个宏定义,表示一个空指针。在C++11之前,NULL被定义为0。nullptr是C++11引入的关键字,表示一个空指针常量。与NULL不同的是,nullptr的类型是std::nullptr_t,而NULL的类型是int。nullptr可以更好地与重载函数和模板函数进行匹配,避免了一些潜在的问题。