标准名空间(Namespace std)
我们能够找到的关于名空间的最好的例子就是标准C++ 函数库本身。
如ANSI C++ 标准定义,
标准C++库中的所有类、对象和函数都是定义在名空间std下面的。
你可能已经注意到,我们在这个教程中全部忽略了这一点。作者决定这么做是因为这条规则几乎和ANSI 标准本身一样年轻 (1997) ,许多老一点的编译器并不兼容这条规则。
几乎所有的编译器,即使是那些与ANSI 标准兼容的编译器,都允许使用传统的头文件 (如iostream.h, stdlib.h, 等等),就像我们在这个教程中所使用的一样。
然而,ANSI标准完全重新设计了这些函数库,
利用了模板功能,
而且遵循了这条规则将所有的函数和变量定义在了名空间std下。
该标准为这些头文件定义了新的名字,对针对C++的文件基本上是使用同样的名字,但没有.h的扩展名,
例如, iostream.h 变成了iostream。
如果我们使用ANSI-C++ 兼容的包含文件,我们必须记住所有的函数、类和对象是定义在名空间 std 下面的,例如:
#include <iostream>
int main () {
std::cout << "Hello world in ANSI-C++\n"; return 0; }
|
Hello world in ANSI-C++ |
更常用的方法是使用using namespace ,这样我们就不必在所有标准空间中定义的函数或对象前面总是使用范围操作符::了 :
#include <iostream>
using namespace std;
int main () {
cout << "Hello world in ANSI-C++\n";
return 0;
}
|
Hello world in ANSI-C++ |
对于STL 用户,强烈建议使用ANSI-compliant 方式来包含标准函数库。