usingnamespacestd 是什么意思?摘录CSDN 上⾯⼤⽜的回答
简要意思就是使⽤标准库,想知道更清楚的继续读下⾯的。using namespace std 意思: using 和namespace 都是C++的关键词。 std 是标准程序库所驻之命名空间(namespace)的名称。
如果使⽤Boost 的库 ,那就写 using namespace boost;
如果使⽤C++ 标准库 那就写 using namespace std;
就是暴露std 这个名字空间,你就可以调⽤std 这个名字空间下的东西,包含在这个命名空间的所有类还有函数都可以使⽤了
⼀般的名字空间⽤法:
这样使⽤: 那么你在⼀个⽂件中有三种⽤法: 1> using namespace sdm; 然后你就可以使⽤变量temp: temp=9; 还可以使⽤sdm 中的其他每⼀个成员。 2>using sdm::temp; 在这个⽂件中只能使⽤sdm 中的temp 这个变量。 3>你在使⽤时直接使⽤sdm::temp: cout<<sdm::temp<<endl; 使⽤其它的成员也这样调⽤。 哈哈 using namespace 这个东西 我觉得涉及到⼀种组织学 就是怎么把⼀堆代码归在⼀起,把它们纳⼊⼀个space(空间);然后使⽤它们的时候,先要声明使⽤它所在的这个空间
⽐如A B 两个班都有叫张三的⼈,你要使⽤A 班的张三,必然要先指名是A 班这个名字空间(namespace),然后你对张三的所有命令才能达到你的预想,不会叫错⼈ 呵呵 感觉语⾔这东西,重名是最⿇烦的,因为⼈类⾃⾝的限制,不能使⽤太复杂的来作为名字(变量名,函数名),所以很容易出现名字冲突,所以开发了名字空间这种机制来保证⼤家有⾜够的名字可以⽤ 呵呵
具我的体会class(类)这种东西,也具有类似的作⽤,不同类的同名函数可以存在但不冲突,就是表现之⼀呀
namespace 就是⼀个名字的空间。是为了避免名字冲突⽽使⽤的。在不同的空间⾥可以使⽤同⼀个名字⽽不会引起名字冲突。 它的声明就像声明⼀个类⼀样。 例:
⼀ :
<iostream>和<iostream.h>是不⼀样,前者没有后缀,实际上,在你的编译器include ⽂件夹⾥⾯可以看到,⼆者是两个⽂件,打开⽂件就会发现,⾥⾯的代码是不⼀样的。
后缀为.h 的头⽂件c++标准已经明确提出不⽀持了,早些的实现将标准库功能定义在全局空间⾥,声明在带.h 后缀的头⽂件⾥,c++标准为了和C 区别开,也为了正确使⽤命名空间,规定头⽂件不使⽤后缀.h 。namespace是干嘛的
因 此,当使⽤<iostream.h>时,相当于在c 中调⽤库函数,使⽤的是全局命名空间,也就是早期的c++实现;当使 ⽤<iostream>的时候,该头⽂件没有定义全局命名空间,必须使⽤namespace std ;这样才能正确使⽤cout 。
⼆:
所谓namespace ,是指标识符的各种可见范围。
1.
namespace sdm 2.
{ 3.
int temp; 4.
...... 5. }
1.
namespace A{ 2.
int f(){……}; 3.
char g(){……}; 4. ……}
C++标准程序库中的所有标识符都被定义于⼀个名为std的namespace中。
由于namespace的概念,使⽤C++标准程序库的任何标识符时,可以有三种选择:
1、直接指定标识符。例如std::ostream⽽不是ostream。完整语句如下:
1. std::cout << std::hex << 3.4 << std::endl;
2、使⽤using关键字。
1. using std::cout;
2. using std::endl;
以上程序可以写成
1. cout << std::hex << 3.4 << endl;
3、最⽅便的就是使⽤using namespace std;
例如:
1. #include <iostream>
2. #include <sstream>
3. #include <string>
4. using namespace std;
这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量⼀样。那么以上语句可以如下写:
1. cout << hex << 3.4 << endl;
因为标准库⾮常的庞⼤,所程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准库中的⼀切都被放在名字空间std中。但这⼜会带来了⼀个新问题。⽆数原有的C++代码都依赖于使⽤了多年的伪标准库中的功能,他们都是在全局空间下的。
所以就有了<iostream.h>和<iostream>等等这样的头⽂件,⼀个是为了兼容以前的C++代码,⼀个是为了⽀持新的标准。
命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头⽂件区别,⼀般不加".h"
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论