using namespace std指调用命名空间std内定义的所有标识符。
使用“using namespace std”后,命名空间中的标识符就如同全局变量一样。
由于标准库非常大,程序员可能会选择类的名称或函数名称,就像它是标准库中的名称一样。因此,为了避免这种情况导致的名称冲突,标准库中的所有内容都放置在命名空间Std中。
但这将带来新的问题:无数的原始C语言代码依赖于伪标准库中的功能,这些功能已经使用多年,都在全局空间中。
所以就有了诸如
扩展资料:
C语言中调用using namespace std的意义:
1、在同一命名空间、相同作用域中,任何名字须具有唯一性。
2、每个结构和联合内部都有自己的命名空间(独立于其他空间)。
3、结构标签、联合标签、枚举标签共用一个命名空间(独立于其他空间)。
4、goto使用的标签名,只要在同一函数内部唯一(独立于其他空间)。
5、所有其他情况共用一个命名空间,如变量、所有枚举常量、typedef定义的别名等(独立于其他空间)。
参考资料来源:百度百科-namespace
在标准C++以前,都是用#include
并不是写了#include
#include "iostream"与#include
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用
#include
using namespace std; 则出错
所以 要么写成
#include
using namespace std;
要么写成
#include
当然最好是前种
namespace
在我看来,就是变量名/函数名的作用域的意思
最近研究JavaScript,才知道每个函数其实本质上都是对象的一个方法。比如像alert()这个函数,它的默认的作用域就是window这个对象,只是我们平时用它的时候都省去了,完整写出来应该是window.alert()。因此using namespace std里面,std也是作用域的意思,比如有俩对象,都有一个同名的函数,那么你如果不在最前面用using namespace表明作用域,那就要在后面每次用这个函数的时候都把作用域写出来
使用空间的时候需要,比如stl,string等,如果不写这句话,用容器的时候,就必须std::list<>。。。std::string
使用名词空间。。。是c++的命名空间。