C++的using namespace std放在哪里

如题,请问using namespace std 放在:#include<iostream>
using namespace std
int main()
{
`` ````````
}
还是放在:#include<iostream>
int main()
{
using namespace std;
·······················
·····················
}

请说明下! 谢谢

都可以,作用域不一样。

第一种是整个文件中都引入了std命名空间,第二种则是只在main函数中引入std命名空间。
如果为了贪图方便,直接用第一种写法也行,但是C++ Primer中建议用第二种写法,这样可以防止命名空间污染(在你不想引入它的地方也被引入了,就可能导致一些问题。)

另外无论如何,都不应该把using namspace 这种语句写在头文件中,很容易出问题的。追问

哦,也就是说加入放第一种,就是不仅仅是main函数引用,程序中所有的函数都引用是吗
第二种就是只是main引用对吗?
第二种: 如果我由一个用户定义函数,那么我还要在函数体中+上:using namspace 这种语句
对吗 ?
那您推荐哪一种呢?

追答

是的。在函数内部写using namspace其影响只限于这个函数内部,其它函数仍然没有引入这个命名空间。

我觉得其实二者都可以,不过如果你在一个文件中引入了多个命名空间的话,建议还是用第二种,它的作用范围比较有限,这样可以尽可能减小命名空间冲突的情况。任何情况下都不应在.h头文件中写using namespace xxx,而应该在定义时直接用全称,否则包含你头文件的人可能莫名其妙意外的引入了他并不想要的命名空间而出现问题。

温馨提示:内容为网友见解,仅供参考
第1个回答  2015-08-13
例子:
#include
void show(int a)
{
cout<<"age = "<
//表明命名空间在这里没有起到作用。
}
int main()
{
using namespace std;
int age;
cout<<"please input information:"<
cout<<"How ola are you?"<
cin>>age;
show(age);
return 0;
}
也就是说这种情况,只在这个函数中起作用,对于其他函数不起作用。
而放在#include后面的,就不会出现上面的问题,这就有点类似全局变量和局部变量的关系。函数内定义为局部变量,出了这个函数,别的函数不可以使用。
全局变量所有函数都可以使用。
第2个回答  2011-05-16
using namespace std
c++ 中有名字空间的概念,它是为了解决不同版本代码的兼容问题
如:
namespace A
{
void test();
}

namespace B
{
void test();
}

如果
using namespace A;
就是使用A的函数
using namespace B;
使用B的函数

不写,
直接 A::test()
B::test() 也可以

std也是这个意思,
放在最前面即可,意思说,后面的采用std名字空间下的定义
第3个回答  2011-05-16
我见到的基本是
#include<iostream>
using namespace std

98年以后的c++语言提供一个全局的命名空间namespace,可以避免导致全局命名冲突问题。
如果写到函数里面应该是作用域变小了吧。
参考一下百科

参考资料:http://baike.baidu.com/view/1346913.htm

第4个回答  2011-05-16
第一种。。。。追问

但是《C++ Primer plus》中是放在“第二种”这样的,所以我想问下

C++的using namespace std放在哪里
第一种是整个文件中都引入了std命名空间,第二种则是只在main函数中引入std命名空间。如果为了贪图方便,直接用第一种写法也行,但是C++ Primer中建议用第二种写法,这样可以防止命名空间污染(在你不想引入它的地方也被引入了,就可能导致一些问题。)另外无论如何,都不应该把using namspace 这种语句写...

using namespace std是什么意思?
在C++编程中,"using namespace std"这一语句的作用在于引入标准库的全部内容。这里的"std"代表的是标准命名空间,是C++中预设的集合,包含了许多基本的数据类型、输入输出操作、数学函数等。引入"std"命名空间后,编程者无需在使用这些功能时每次都先加上"std"前缀,简化了代码的书写。"std"命名空间中...

谁知道在c++中 "using namespce std"是用来怎么的
C++ using namespace std 一 : <iostream>和<iostream.h>是不一样,前者没有后缀,实际上,在你的编译器include文件夹里面可以看到,二者是两个文件,打开文件就会发现,里面的代码是不一样的。后缀为.h的头文件c++标准已经明确提出不支持了,早些的实现将标准库功能定义在全局空间里,声明在带....

c++中的using namespace std有什么作用?
std是C++里的一个名字空间,用using namespace 命令将STD里面的所有标识都包含到源程序中,你可以将这个语句放在任何地方,并不是像henry0616所说的将他们全部声明为全局变量,这个主要看你把这句话放在哪个地方,就和声明普通变量一样,STD里的标识的作用域就是从声明处开始到离开该过程结束 另外你也可以不...

c++里 如果前面不加 using namespace std;cin和cout可以直接用么 还是...
1、首先,打开c++ ide,这里使用的是dev c++,新建一个源代码。2、首先包含必要的头文件,cin需要包含iostream。3、然后main函数输入如图中的内容。4、打完代码后,点下编译然后运行,输入一个数字回车便会显示刚才输入的数字。5、如果在main前面加入一句using namespace std,就可以省去cout、cin、endl...

c语言using namespace std什么意思
using namespace std指调用命名空间std内定义的所有标识符。使用“using namespace std”后,命名空间中的标识符就如同全局变量一样。由于标准库非常大,程序员可能会选择类的名称或函数名称,就像它是标准库中的名称一样。因此,为了避免这种情况导致的名称冲突,标准库中的所有内容都放置在命名空间Std中...

VC++中"using namespace std"有什么用的
从而与其它全局实体分隔开来。不同的命名空间可以有相同的类名被定义 。using namespace std;就是指明下面的程序使用std,如果不用这句指明的话就要用std:string(string是std空间中定义的,也可以在全局空间中定义,只要名字空间不一样即可)。否则可以默认名字空间中有std.便不用std:来修饰。

为什么用了usingnamespacestd会报错?
在某些情况下,使用`using namespace std;`会导致编译错误。这一问题源于C++中存在三种不同版本的`ispunct`函数。第一种`ispunct`是C库中的全局函数,可以被标准库头文件包含。第二种是标准库中定义的`ispunct`,位于``头文件中。第三种是``头文件中的模板函数`ispunct`。不使用`using namespace ...

请问using name space是什么意思?在C++中有什么作用?
namespace)是一种描述逻辑分组的机制,可以将按某些标准在逻辑上属于同一个任务中的所有类声明放在同一个命名空间中。标准C++库(不包括标准C库)中所包含的所有内容(包括常量、变量、结构、类和函数等)都被定义在命名空 间std(standard标准)中了。这句话的意思是"使用一个名为std的空间"...

关于C++的using,向大家请教了
这是我们最熟悉的用法,例如:using namespace std;2.在子类中使用 using 声明引入基类成员名称 在private或者protected继承时,基类成员的访问级别在派生类中更受限:class Base { public:std::size_t size() const { return n; } protected:std::size_t n;};class Derived : private Base { ....

相似回答