4.7.5 头文件中的名字空间

我们将会注意到,在这本书的几乎所有cpp文件中都有使用指令(using directive)描述,通常的形式如下:

4.7.5 头文件中的名字空间 - 图1

因为std是环绕整个标准C++库的名字空间,所以这个特定的使用指令允许不用限定方式使用标准C++库中的名字。但是,在头文件中是决不会看到使用指令的(至少,不在一个作用域之外)。原因是,这样的使用指令去除了对这个特定名字空间的保护,并且这个结果一直持续到当前编译单元结束。如果将一个使用指令放在一个头文件中(在一个范围之外),这就意味着“名字空间保护”将在包含这个头文件的任何文件中消失,这些文件常常是其他的头文件。这样,如果将使用指令放在头文件中,将很容易最终实际上在各处“关闭”名字空间,因此不能体现名字空间的好处。

简言之,不要在头文件中放置使用指令。