0.4 语言标准

现在C++有多个版本的国际标准(98/11/14/17/20),本书主要使用C++11(ISO/IEC 14882:2011),不含数字标识的“C++标准”通常就是指C++11,但本书在涉及C++的某些语言特性时可能会明确标明具体的版本,有时还会以“C++11.x.y.z”的形式标明所引用的C++标准文档的章节号。

书中使用较多的新语言特性有以下四个。

■ nullptr:强类型的空指针,替代NULL宏。

■ auto/decltype:自动推导表达式类型,不必手写变量的类型。

■ for:基于范围的新式循环,形式更加“优雅”。

■ lambda表达式:又称闭包(closure),能够非常便捷地定义函数对象,通常的形式为[](...){...},其中,[]是捕获列表,()是函数参数,{}是函数体。

本书称C++标准中定义的函数库为C++标准库或STL,但严格意义上,STL与C++标准库并不等价,STL只是C++标准库中的一个(很大的)子集,这么称呼它有时只是为了行文上的方便。

在一般情况下使用C++标准库都必须包含相应的头文件,并且加上“using namespace std”语句,但标准库已经成为C++软件开发的基础设施,应用得非常频繁,因此本书中的代码示例片段一般会将其略去。但有些情况下,为了特别强调,会加上std名字空间前缀,如std::vector。读者可以认为书中所有代码都默认包含了下头文件:

为使读者能够对C++标准有更多的了解,作者编写了一份简要介绍,作为本书附录B供参考。