C++ FAQ C11 1 Overview
前言
本部分内容是自C++ FAQ的学习笔记,部分内容因之前已学过, 此外也有部分与Stroustrup的FAQ重复。 这种情况只简略回顾一下。
链接: https://isocpp.org/wiki/faq/cpp11
C++11: Purpose of this FAQ Section
主要是简略学习一下C++的语法特性,并不会深入细节, 所以只能算一个入门材料,会涉及一些例子。
What is C++11
应该把它看成对C++98的一次很大的革新。
What is C++0x
因为本预计标准10年前出来,所以非官方的说法也是C++0x, 结果没想到拖到11年才有正式的标准发布。其实跟C++11是一回事。
When will compilers implement C++11
最先的完整实现C++11语法标准的应该是GCC 4.8.1(2013/05/31),但其STL没有很好的支持。 完整支持(包括STL)的应该是Clang 3.3(2013.06.05)
关于C++11实现的编译器对比 参见:http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport
How did the committee approach picking new language and library feature for C++11?
C++11标准并不能简简单单地堆砌一些有用的特性,它需要考虑兼容性以及语言的统一性。
一个特性是否会纳入C++11主要考虑是否符合语言的设计目标(set of specific design goals)
C++11着重于提高抽象机制,这不同于通常人们所理解的“类”或者“对象”。 C++11的含义远高于此:user-defined types的意义(range)能被干净地、安全地表示(expressed) 这依赖于添加的如下特性:
- initializer-lists
- uniform-initialization
- template aliases
- rvalue reference
- defaulted and deleted functions
- variadic templates
而以上特性的实现也因一下特性变得简单:
这些大的改进使得C++11更想一个新语言
而对于STL而言,11的STL比98的STL表现更好。
What were the general design goals of the C++11 effort?
C++的宗旨是:
- a better C
- 支持data abstraction
- 支持面向对象编程
- 支持泛型编程
整个C++11的努力是强化了:
- 使得C++成为一个更好的针对system programming和library building的语言
- 使得C++更容易教与学。即增加了统一性、stronger guarantees和更便于新手使用
- 还有就是C++演进过程中严格遵守向后兼容性。虽然已对某一特性有更新的语法支持, 但是委员会依然会保留旧的特性,例如: static_assert null_ptr constexpr
What specific design goals guided the committee?
略 无非介绍了一下C++的设计宗旨,包括兼容性、更好的库扩展、增加类型安全、更好的硬件表现等。
有一定还是值得提一下,即C++面对的不同领域:
Machine model and concurrency
提供对现代的并行硬件更好的支持,包括: threads,future,thread-local-storage和atomics
Generic programming
提供对泛型编程更好的编程,包括auto,template alias等
Systems programming
增加了更贴近底层硬件的支持和效率(例如底层的嵌入式系统编程), 例如constexpr,std::array和generalized PODs(参见我的wiki关于C++:POD)
Library building
增加了一些特性,以解决abstraction mechanisms的限制的、低效的及不合常规的地方, 例如:inline namespace, inherited constructors以及rvalue reference
Where can I find the committee papers for C++11 features?
参见:the committee papers archive 但是好像太细了,讨论各种可行的不可行的特性,没有时间不值得看。
Where can I find academic and technical papers about C++11?
就不一一列举的,详情参见: https://isocpp.org/wiki/faq/cpp11#cpp11-technical-papers
Where else can I read about C++11?
参见: https://isocpp.org/wiki/faq/cpp11#cpp11-other-reading 这里还是有很多不错的材料,值得推荐
else
略