aceoo's Real Life
标签类目:C++
2009/10/27编程

没有评论
114 views

20091027@关于using namespace std

自学C++中,不断的从头看一些基础的概念会有很多收获,例如,今天在csdn上,有人在问关于using namespace std 的问题,众人回答总结如下:

1、使用了#include <iostream.h> 就可以不用using namespace std 

可以,但这不是一个很好的习惯,.h的文件是C语言遗留下来的,在C++中不算标准的头文件,这个在谭浩强的书里也得到体现——全部都是标准的C++。

2、标准库是iostream,写法是#include <iostream>

标准C++创建了一种新式的头文件,为标准C++库所用。标准C++的新式头文件没有扩展名,即不需要.h类的扩展名。

标准C++包含了整个C函数库,支持在C++程序中引用C函数,允许用#include把包含C函数库的头文件包含到程序中。但标准C+也提供了与之对应的新式函数库,标准C++中与C的函数库相对应的头文件的命名方式是:在原C函数库对应头文件名的前面加上”c”前缀,并去掉.h。例如,C语言的头文件有:stdio.h,ctype.h,math.h,标准C++头文件有cstdio,ctype,cmath.

标准C++将新格式头文件中的内容全部放到了std名字空间中,非新格式头文件中的内容则被直接放到了全局名字空间中。在程序中需要引用标准C++新格式头文件中的函数,就需要在程序中使用下面的语句将std名字空间中的名称引入到全局名字空间中。

如此则可以用using namespace std,但是这种写法是不是很好呢?

3、有的网友不推荐,推荐还是

using std::string; 
using std::cout; 
using std::endl;

这样的写法,理由如下:using namespace xxx 会引入 xxx 名空间内的所有标识符,而 using xxx::yyy 只引入相应标识符。相比之下明确指定引入的标识符更加安全,不会产生意想不到的冲突。使用 using xxx::yyy 形式可以明确知道自己引入了哪些标识符,避免名字冲突。

说实话,我以前一直以为using namespace std是为了方便

返回顶部