《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类

1.3 C++11特性的分类

从设计目标上说,能够让各个特性协同工作是设计C++11/0x中最为关键的部分。委员会总希望通过特性协作取得整体大于个体的效果,但这也是语言设计过程中最困难的一点。因此相比于其他的各种考虑,WG21更专注于以下理念:

《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类

根据这些设计理念可以对新特性进行分类。在本书中,我们的核心章节(第2~8章)也会按照这样的方式进行划分。在可能的时候,我们也会为每个理念取个有趣一点儿的中文名字。

而从使用上,Scott Mayers则为C++11创建了另外一种有效的分类方式,Mayers根据C++11的使用者是类的使用者,还是库的使用者,或者特性是广泛使用的,还是库的增强的来区分各个特性。具体地,可以把特性分为以下几种:

《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类

那么我们可以结合这种分类再来看一下可以怎样来学习所有的特性。下面我们通过设计理念和用户群对C++11特性进行分类,如表1-3所示。

由于C++11的新特性非常多,因此本书不准备涵盖所有内容。我们粗略地将特性划分为核心语言特性和库特性。而从C++11标准的章节划分来看(读者可以从网站上搜到接近于最终版本的草稿,正式的标准需要通过购买获得),本书将涉及C++11标准中第1~16章的语言特性部分(在C++11语言标准中,第1~16章涵盖了核心语言特性,第17~30章涉及库特性),而标准库将不在本书中描述。当然,这会导致许多灰色地带,因为如同我们提到的,我们总是倾向于使用库而不是语言扩展来实现一些特性,那么实际上,讲解语言核心特性也必然涉及库的内容。典型的,原子操作(atomics)就是这样一个例子。因此,在本书的编写中,我们只是不对标准库进行专门的讲解,而与核心内容相关的库内容,我们还是会有所描述的。

《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类
《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类
《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类
《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类

而之前我们提到过的“更倾向于使用库而不是扩展语言来实现特性”理念的部分,如果有可能,我们会在另一本书或者本书的下一个版本中来进行讲解。下面列出了属于该设计理念下的库特性:

《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类
《深入理解C++11:C++ 11新特性解析与应用》——1.3 C++11特性的分类

上一篇:awk之特征相同行的合并 ~转


下一篇:mac下cocos2dx(带jsoncpp第三方库)编译为android项目心得