当引入一个全局的using指令时(using namespace std等),就已经为那个文件打开了该名字空间。这对于一个实现文件(.cpp)来说是一个好方法,因为只有该文件编译结束时,using指令才会起作用,它不会影响到任何其他文件。
如果发现一个实现文件中使用太多的using指令而产生名字冲突(多个名字空间重复定义),就要对文件做简单的改变,使用明确的限定(使用的地方用std::cout等)或者using声明(在文件开始的地方声明using std::cout)来消除名字冲突,这样不用修改其他实现文件。
头文件的情况不一样,不要把一个全局的using指令引入到一个头文件中,因为那样意味着包含这个头文件的任何其他头文件也会打开这个名字空间,所以在头文件中,最好使用明确的限定或者被限定在一定范围内的using指令和using声明。