4.6 本章小结

在本章里,介绍了C++11四个讨人喜欢的新特性,它们的特色非常鲜明,都能够减少代码的书写,或加强代码的可读性。

首先,我们看到C++11中解决了双右尖括号的语法问题的小改进。相比于C++98中,模板实例化时右尖括号间必须空格的“奇怪”规定,C++11可以说采取了更加平易近人的态度,使得这一规则不再需要。

其次,我们可以看到C++11中关于类型推导的巨大改进。虽然auto、decltype,以及追踪返回类型的函数声明,它们的由来都可以追溯到C++使用模板进行泛型编程上,但从实际效果上看,由于有了类型推导,整个C++程序的书写的便利性被极大地提高了。相应地,代码可读性也大大改善。可以说,类型推导不仅提高了模板库的泛型能力,导致C++11风格下的编程跟以前的C++98风格下的编程有了改变,而且在我们的范例中看到了全部倚仗于类型推导,没有一个“明确”类型的C++代码,这对于一个静态类型的、有着长久历史渊源的语言而言,几乎是不可想象的。但是在C++11中,这种友好的编程方式已经得到了良好的支持。虽然深入语言细节的时候,我们可能发现一些推导的规则依然复杂,但对于90%以上的普通应用,类型推导已经做得足够好用。如果要在C++11中挑选最好的新特性的话,类型推导无疑会是非常有力的竞争者。

再者,我们看到了基于范围的for循环。结合auto关键字,程序员只需要知道“我在迭代地访问每个元素”即可,而再也不必关心范围、如何迭代访问等细节。这比以前标准库的for_each做得更加出色。虽然基本上基于范围的for循环没有任何灵活性可言,但将常做的事情做得更快更好,也往往是程序员最大的需求。

总的来说,以上新特性对于新手来说,非常易学,对于老兵而言,非常好用。无论对什么水平的编程者来说,总可以从使用这些特性当中获得一些益处。在后面的章节里,我们还会继续看到这些特性的身影(就如在前面的章节里一样)。