看了网上的许多解释,最后自己的理解是:namespace是指标识符的各种可见范围,是C++为了解决命名冲突而产生的一种机制。
举个例子:
你在写某一个程序的时候,引入了两个库A和B。这两个库都有对于函数greeting的实现,如果没有使用using namespace A(假设A库的命名空间名称是A)直接在函数中使用greeting(),编译器是不能判断这个函数是哪个库中的,而如果加上using namespace A,说明在当前这个程序中使用的函数greeting是在A库中的,而不会去B库中找它的实现。(或者使用A::greeting()也可以)
而using namespace std则是表示在本程序中使用命名空间std,C++标准程序库中的标识符都被定义在一个名为std的namespace中。这样你使用cout的时候,编译器就知道你用的是C++定义好的那个cout。而不是不知道去哪里找它的实现。
我也不知道对不对。欢迎批评指正