C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。
namespace是指标识符的各种可见范围。命名空间用关键字namespace 来定义。命名空间是C++的一种机制,用来把单个标识符下的大量有逻辑联系的程序实体组合到一起。
此标识符作为此组群的名字。
如果我们使用了using namespace std, 而且我们在自己的程序中定义了一个函数toupper(),这将重写标准库中的toupper()函 数,这是因为这两个函数都是位于全局命名空间中的。
那么我们的minm
少在头文件中使用using namespace std,因为你的头文件可能被别人的cpp包含,那么这些cpp也默认就using namespace std了。这样的话可能会造成问题,例如在c++11和boost中都有shared_ptr,不指定namaspace或者using了两个namespace可能会造成混淆问题。
一般说来,使用using命令比使用using编译命令更安全,这是由于它只导入了制定的名称。如果该名称与局部名称发生冲突,编译器将发出指示。using编译命令导入所有的名称,包括可能并不需要的名称。如果与局部名称发生冲突,则局部名称将覆盖名称空间版本,而编译器并不会发出警告。另外,名称空间的开放性意味着名称空间的名称可能分散在多个地方,这使得难以准确知道添加了哪些名称。
using命令:using std::cout;
using编译命令:using namespace std;
不要在头文件使用using namespace std;