标准库名字空间
标准库定义在一个称为 std
的名字空间里。这也就是为什么我写的是 std::cout
,而不直接写 cout
的原因。我这样做是明确说出要使用的是标准 cout
,而不是其他的什么 cout
。
标准库的每种功能都是通过某个像 <iostream>
这样的头文件提供的。例如,
#include <string>
#include <list>
这就使标准的 string
和 list
都可以用了。借助于前缀 std::
就能使用它们:
std::string s = "Four legs Good;two legs Baaad!";
std::list<std::string> slogans;
为了简单起见,我将很少在实例中显式使用 std::
前缀,也将不总是去显式地 #include
必要的头文件。为了能编译和运行这里的程序片段,你必须自己去 #include
适当的头文件。除此之外,你还必须使用 std::
前缀,或者将出自 std
的每个名字都做成全局的。例如,
#include <string> // 使标准字符串功能可以使用
using namespace std; // 是所有std名字都可用,不必加std::前缀
string s = "Ignorance is bliss!";
一般来说,将一个名字空间中的所有名字统统倾倒进全局名字空间里,并不是一种好的做法。但是,为使这里用于阐述语言和库特征的实例比较短小,我还是忽略了那些将重复出现的 #include
和 std::
限定符。在这本书里,我几乎是只用到标准库。所以,如果用到了某个来自标准库的名字,那么,或者在那里用的就是标准库所提供的东西,或者就是为该项标准库功能可能如何定义提供一个解释。
🔚