7个回答
展开全部
using namespace std指调用命名空间std内定义的所有标识符。
使用“using namespace std”后,命名空间中的标识符就如同全局变量一样。
由于标准库非常大,程序员可能会选择类的名称或函数名称,就像它是标准库中的名称一样。因此,为了避免这种情况导致的名称冲突,标准库中的所有内容都放置在命名空间Std中。
但这将带来新的问题:无数的原始C语言代码依赖于伪标准库中的功能,这些功能已经使用多年,都在全局空间中。
所以就有了诸如<iostream.h>和<iostream>这样的head文件,一种是与以前的C语言代码兼容,另一种是支持新标准。
扩展资料:
C语言中调用using namespace std的意义:
1、在同一命名空间、相同作用域中,任何名字须具有唯一性。
2、每个结构和联合内部都有自己的命名空间(独立于其他空间)。
3、结构标签、联合标签、枚举标签共用一个命名空间(独立于其他空间)。
4、goto使用的标签名,只要在同一函数内部唯一(独立于其他空间)。
5、所有其他情况共用一个命名空间,如变量、所有枚举常量、typedef定义的别名等(独立于其他空间)。
参考资料来源:百度百科-namespace
展开全部
在标准C++以前,都是用#include<iostream.h>这样的写法的,因为要包含进来的头文件名就是iostream.h。标准C++引入了名字空间的概念,并把iostream等标准库中的东东封装到了std名字空间中,同时为了不与原来的头文件混淆,规定标准C++使用一套新的头文件,这套头文件的文件名后不加.h扩展名,如iostream、string等等,并且把原来C标准库的头文件也重新命名,如原来的string.h就改成cstring(就是把.h去掉,前面加上字母c),所以头文件包含的写法也就变成了#include <iostream>。
并不是写了#include<iostream>就必须用using namespace std;我们通常这样的写的原因是为了一下子把std名字空间的东东全部暴露到全局域中(就像是直接包含了iostream.h这种没有名字空间的头文件一样),使标准C++库用起来与传统的iostream.h一样方便。如果不用using namespace std;使用标准库时就得时时带上名字空间的全名,如std::cout << "hello" << std::endl;
#include "iostream"与#include<iostream>的区别:前者先在当前目录找iostream文件,找不到再去系统头文件路径找,后者反之。因此,做为一个良好的习惯,在包含系统头文件时尽量用<>,而在包含自己的工程中的头文件时用""。
<iostream>和<iostream.h>不一样,前者没有后缀,实际上,在编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用< iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
#include <iostream.h>
using namespace std; 则出错
所以 要么写成
#include <iostream >
using namespace std;
要么写成
#include <iostream.h>
当然最好是前种
并不是写了#include<iostream>就必须用using namespace std;我们通常这样的写的原因是为了一下子把std名字空间的东东全部暴露到全局域中(就像是直接包含了iostream.h这种没有名字空间的头文件一样),使标准C++库用起来与传统的iostream.h一样方便。如果不用using namespace std;使用标准库时就得时时带上名字空间的全名,如std::cout << "hello" << std::endl;
#include "iostream"与#include<iostream>的区别:前者先在当前目录找iostream文件,找不到再去系统头文件路径找,后者反之。因此,做为一个良好的习惯,在包含系统头文件时尽量用<>,而在包含自己的工程中的头文件时用""。
<iostream>和<iostream.h>不一样,前者没有后缀,实际上,在编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。
后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带.h后缀的头文件里,c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。
因此,当使用<iostream.h>时,相当于在c中调用库函数,使用的是全局命名空间,也就是早期的c++实现;当使用< iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这样才能正确使用cout。
#include <iostream.h>
using namespace std; 则出错
所以 要么写成
#include <iostream >
using namespace std;
要么写成
#include <iostream.h>
当然最好是前种
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
namespace
在我看来,就是变量名/函数名的作用域的意思
最近研究JavaScript,才知道每个函数其实本质上都是对象的一个方法。比如像alert()这个函数,它的默认的作用域就是window这个对象,只是我们平时用它的时候都省去了,完整写出来应该是window.alert()。因此using namespace std里面,std也是作用域的意思,比如有俩对象,都有一个同名的函数,那么你如果不在最前面用using namespace表明作用域,那就要在后面每次用这个函数的时候都把作用域写出来
在我看来,就是变量名/函数名的作用域的意思
最近研究JavaScript,才知道每个函数其实本质上都是对象的一个方法。比如像alert()这个函数,它的默认的作用域就是window这个对象,只是我们平时用它的时候都省去了,完整写出来应该是window.alert()。因此using namespace std里面,std也是作用域的意思,比如有俩对象,都有一个同名的函数,那么你如果不在最前面用using namespace表明作用域,那就要在后面每次用这个函数的时候都把作用域写出来
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用空间的时候需要,比如stl,string等,如果不写这句话,用容器的时候,就必须std::list<>。。。std::string
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
使用名词空间。。。是c++的命名空间。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |