c++11 c++17 区别
时间: 2024-02-10 17:48:44 浏览: 225
C++11和C++17是C++语言的两个版本,它们之间有一些重要的区别。
1. 特性增加:C++11引入了许多新的特性,如Lambda表达式、右值引用、关键字auto、nullptr、静态断言等;而C++17则增加了一些新的特性,如结构化绑定、if和switch语句中的初始化、constexpr lambda表达式、折叠表达式等。
2. 头文件:C++11中引入了一些新的头文件,如`<chrono>`、`<thread>`、`<ratio>`等,而C++17中又增加了一些新的头文件,如`<string_view>`、`<optional>`、`<any>`等。
3. constexpr函数:C++11中的constexpr函数只能包含一条语句,而C++17中的constexpr函数可以包含多条语句。
4. Unicode支持:C++11中引入了Unicode支持,包括UTF-8、UTF-16和UTF-32编码;而C++17进一步扩展了Unicode支持,增加了一些新的字符集和字符串字面量。
5. std::shared_ptr指针:C++17中为std::shared_ptr指针增加了一个`std::weak_from_this()`方法,可以在对象生命周期结束后返回一个弱引用。
总的来说,C++17相比C++11增加了更多的功能和改进,但也需要更高的编译器支持。
阅读全文