C++11 新特性
2023-06-06
15
0
C++的设计目标
C++98/03设计目标:
- 比C语言更适合系统编程(且与C语言编程)
- 支持数据抽象
- 支持面向对象编程 (C++本来就是面向对象的)
- 支持泛形编程 (这个是重点,从这里开始引入了STL,模板也得到了加强)
C++11的目标
- 使得C++成为更好的用于系统开发及库开发的语言
- 使得C++成为更易于教学的语言(语言更加一致化和简单化)
- 保证语言的稳定性,以及与C++03及C语言的兼容性
对比以上C++各个阶的设计目标,我们可以以这样理解,C98/03开启了C++泛形化的大门,让这门语言的拓展性有了更大的空间.但随首语言的发展,这个语言也越来越复杂了,所以C++11为了更好地让开发者上手,需要对语言进行简化.让开发者更好地进行任务开发,而不是纠结于C++的语法。
C++11的变化
- 通过内存模型,线程,原子操作等来支持本地并行编程
其实这个可以理解为C++为了更好地进行系统移植,将开发过程中用到的操作系统的一些工具进行了抽象封装,降低了语言对操作系统的耦合。 - 通过统一初始化表达式,auto,declytype,移动语义等来统一对泛形编程的支持。
模板,模板的模板,这些在98里需要知道类型的东西,现在都可以用一个auto来由语言自行推导,我们只需要写逻辑就行了。C++更加简单了,更加接地气了。 - 通过constexpr,pod等更好地支持系统编程。(语言的系统增加。)
- 通过内联命名空间,继续构造函数和右值引用等,以更好地支持库的构建。(还为为了方便编程,降低语言的上手难度)
C++11新引入的关键字
- alignas
- alignof decltype
- auto(重新定义)
- static_assert
- using(重新定义)
- noexcept
- export(弃用,不过未来可能留作它用)
- nullptr
- constexpr
- thread_local
c++11对一些关键字进行了重定义,所以和C98的一些用法会不一样,这里需要注意。