C++语言 这里为什么不能用usingc namespace stdd;

c++练习题(带答案)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
c++练习题(带答案)
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
下载文档到电脑,查找使用更方便
还剩23页未读,继续阅读
你可能喜欢在c++中什么时候需要加上using namespace std?什么时候不加?有什么意义?
在c++中什么时候需要加上using namespace std?什么时候不加?有什么意义?
那是命名空间,你所用到的很多函数或者类都是被放到命名空间里面的,命名空间是防止名字重复而使用的,比如STL有个类叫string,而你也设计一个类叫string,那么编译器编译的时候就搞不清楚到底是那个string,所以用一个命名空间就比较方便了。具体是这么回事的,比如有两个班级,A班和B班,两个班各有一个叫张三的人,而两个班的同学相互之间都是非常熟悉的。那么他们聊天的时候说张三,那其他人肯定会问,哪个张三?对吧,因为搞不清楚到底说的是哪个,所以会犯迷糊。而这个时候,那个人会补充,A班的张三或者B班的张三,这样,其他人就知道到底是谁了。这里的A班,B班就好像命名空间一样,而张三就好像那个string,或者说是对象,变量或者函数。当你自己定义一个string并把它放到命名空间AAA中的时候,你使用string只要指定是哪个命名空间的,就不会导致编译器分不清是哪个string了。你使用时会用std::string或者AAA::string,前者告诉编译器我用的string是在命名空间std里面的,后者告诉编译器用的string是在命名空间AAA里面的。这样,编译器就一目了然,不会出错。但是你却发现每次只要用到string都必须在前面加上AAA,这样相当麻烦,有没有办法简化操作呢?当然有,就好像上面的例子,那些人聊天之前,他可以告诉其他人说,注意,下面说到张三都是说的B班的,那么其他人就知道,后面只要出现张三都是在说B班的,不是A班的了。很多文章里面也有这样的情况啊,一般注明是以下简称什么什么的,就是为了避免重复,导致混淆。而程序一样的,你可以先告诉编译器你用的string是哪个命名空间的。就要用到这句了。这样告诉编译器,我没有指定命名空间的,就默认使用std这个命名空间,那么你使用string就不用再加std::作用域了。只需要直接写string就可以了,编译器就知道你说的是哪个string了。这就是命名空间的作用。希望你能明白,祝学习进步~!
意思就是计算机里面本来就有这个std是吧?
是,是别人写好了的,你使用而已。
的感言:3QQ~ 相关知识略懂社热议
相关知识略懂社热议等待您来回答
编程领域专家
& &SOGOU - 京ICP证050897号用这个C语言程序就可以算出来,代码如下:
int main(){
int a,b,c,d,f,g,h,i,j,sum=0......
楼主正文显示宽度
跟帖显示为
本帖只代表的个人观点,不代表人民网观点。 如将本文用于其他媒体出版, 请与联系。举报
微信扫一扫分享本帖到朋友圈
微信扫一扫分享本帖到朋友圈
图文编辑模式
12:10:42&)
628字(3476/75)
( 08:14:46)
( 10:33:31)
26字(38/0)
( 09:14:52)
89字(704/0)
( 09:07:37)
140字(80/0)
( 08:51:09)
( 08:37:19)
( 08:33:04)
25字(16/0)
( 08:24:12)
( 02:13:29)
( 02:13:29)
( 02:13:29)
( 02:13:29)
( 02:13:29)
( 01:05:05)
54字(677/0)
( 23:58:09)
36字(15/0)
( 23:56:30)
( 23:54:11)
157字(181/0)
( 23:34:23)
( 23:10:29)
( 23:05:02)
70字(26/0)
( 22:59:48)
( 21:34:32)
22字(22/0)
( 21:21:10)
( 20:48:34)
( 20:28:43)
62字(14/0)
( 20:23:10)
( 20:13:53)
( 19:56:18)
( 19:43:03)
( 19:33:25)
( 19:43:01)
( 19:30:29)
( 19:27:31)
27字(10/1)
( 19:57:09)
( 19:23:35)
30字(215/1)
( 19:39:49)
( 19:20:44)
478字(129/0)
( 18:58:24)
( 19:22:17)
( 18:37:37)
( 17:58:17)
32字(14/0)
( 17:51:20)
( 17:49:02)
( 17:41:33)
28字(14/0)
( 17:21:30)
( 16:48:53)
48字(20/0)
( 16:31:05)
177字(12/0)
( 16:27:14)
( 16:25:55)
( 16:21:46)
( 16:13:33)
74字(14/0)
( 16:10:36)
( 15:53:33)
( 15:52:52)
( 15:45:30)
( 15:41:25)
( 15:18:20)
( 15:11:42)
( 15:05:56)
( 15:02:00)
23字(10/1)
( 16:03:36)
20字(30/0)
( 14:58:55)
( 14:23:38)
24字(11/0)
( 14:23:11)
36字(18/0)
( 14:20:27)
98字(47/0)
( 14:05:25)
( 13:56:14)
20字(17/0)
( 13:56:08)
14字(353/0)
( 13:42:52)
( 13:27:48)
62字(39/0)
( 13:04:24)
79字(38/0)
( 12:55:54)
23字(16/0)
( 12:54:54)
18字(17/0)
( 12:21:23)
52字(54/0)
( 12:10:42)
18字(21/0)
请登录后继续操作....
强国社区-人民网c++问题,三个数中求最大值三个数中求最大值,为什么我这里无法通过编译,#includeint main(){int a,b,c,d;//d为最大数据cin>>a>>b>>c;d=max(a,b,c);cout
HI你们好679
子函数如果要放在主函数后面,子函数需要在主函数前进行定义,否则就把它放在前面.还有一个问题,函数名不可以用max,它是库里定义的自带的函数.程序改成:#includeint Max(int a,int b,int c);int main(){int a,b,c,d;//d为最大数据cin>>a>>b>>c;d=Max(a,b,c);couta>>b>>c;d=Max(a,b,c);cout
为您推荐:
其他类似问题
扫描下载二维码今天突然看到一个这样的说法:很多时候使用这句代码不是一个好的办法:
更加合适的做法是使用诸如:std::cout以及std::cin。
我想问下为什么呢?是因为性能的原因吗?
该问题被发起重新开启投票
投票剩余时间:
之前被关闭原因:
该问题被发起删除投票
投票剩余时间:
距离悬赏到期还有:
参与关闭投票者:
关闭原因:
该问题已经被锁定
锁定原因:()
保护原因:避免来自新用户不合宜或无意义的致谢、跟帖答案。
该问题已成功删除,仅对您可见,其他人不能够查看。
std::cout以及std::cin。是使用系统定义的cout和cin方法且仅使用这两个方法,using namespace std则是将所有的系统定义的标识符导入,也就是说你自己定义的东西(变量,方法,类等)不能和系统中的这些标识符重名,否则将出现命名冲突的错误!
所谓namespace,是指标识符的各种可见范围。 C++标准程序库中的所有标识符都被定义于一个名为std的namespace中。 由于namespace的概念,使用C++标准程序库的任何标识符时,可以有三种选择: 1、直接指定标识符。例如std::ostream而不是ostream。完整语句如下:
std::cout && std::hex && 3.4 && std::
2、使用using关键字。
using std:: using std:: using std::
以上程序可以写成
cout && std::hex && 3.4 &&
3、最方便的就是使用 例如:
#include &iostream& #include &sstream& #include &string&
这样命名空间std内定义的所有标识符都有效(曝光)。就好像它们被声明为全局变量一样。那么以上语句可以如下写:
cout && hex && 3.4 &&
因为标准库非常的庞大,所程序员在选择的类的名称或函数名时就很有可能和标准库中的某个名字相同。所以为了避免这种情况所造成的名字冲突,就把标准 库中的一切都被放在名字空间std中。但这又会带来了一个新问题。无数原有的C++代码都依赖于使用了多年的伪标准库中的功能,他们都是在全局空间下的。
增大了命名空间范围,容易引起重名问题,例如下面这个程序:
#include&iostream&class distance{private:public:
distance():a(10){}
distance(int x)
void print()
cout&&"\n a = "&&a&&" \n ";
distance operator *(distance);};distance distance :: operator *(distance d){
return distance(a);}int main(){distance d1,d2,d3;d1.print();d2.print();d3.print();d3=d1 * d2;d3.print();return 0;}
会产生编译错误:
'distance' : ambiguous symbol.
原因就是distance也是在标准模板函数的名称库。所以,您可以使用::范围运算符来引用你自己的名字或您可以更改您的类的名称。
可以使用诸如这样的方式using namespace xxoo{
}这样的话,之后你在括号里面书写的类才用到了所需要的命名空间。
其实这种说法和性能无关的。很多时候使用要么是因为偷懒,要么是使用std中的函数命名比较多,一一列举麻烦。但的确容易引起命名冲突,此时就不能再后面再使用std::cout这样的命名了。
如果用到的命名少,最好还是单独列举如 std::cout以及std::cin。
跟性能完全无关。namespace 的引入是为了解决名字冲突的问题,而 using namespace... 的引入是为了方便程序员,使其不用每次都输入长长的名字。这些都跟性能无关。通常不建议在头文件中使用 using namespace xxx 语句,不仅是对 std。如果头文件 a.h 使用了该语句,所有直接或间接包含 a.h 的文件都隐式使用了该语句,这会很容易导致名字冲突。在实现文件中使用则一般不会出现问题。而且,即使出现问题,也局限于使用了该语句的单个实现文件。
头文件里面不要加要不然引用你的头文件的都被迫using了。其他cpp里面其实用了就用了吧,编译不出问题就没事……C++库的类型名基本都是小写,只需要注意你的变量名尽量不要使用可能重复的那些就行。
google c++ style的观点,可以参考一下
跟性能没有关系,主要是区分命名空间
当引入其他库时,该库定义了同名的类、函数,这时你再次using namespace可能会引起冲突,面临大范围的修改
最好不要在头文件中使用 using namespace XXX...不然名词冲突很纠结..不要嫌麻烦..
不是您所需,查看更多相关问题与答案
德问是一个专业的编程问答社区,请
后再提交答案
关注该问题的人
共被浏览 (9786) 次

我要回帖

更多关于 using namespace 的文章

 

随机推荐