中易网

C++ 命名空间使用重复的问题:

答案:1  悬赏:0  
解决时间 2021-02-02 04:59
有下面一个程序。。。 #include <iostream> namespace T { char *str="Tom"; } namespace J { char *str="Jerry"; } using namespace std; using namespace T; using namespace J; int main(void) { cout<<str<<endl; return 0; } 程序是编译失败还是显示"Tom"还是显示"Jerry"?
最佳答案
你没有理解C++的namespace。如果你熟悉java的话,你可以这样理解,java中用包机制取代了所谓的命名空间。在java中一般是一个类一个文件的(原则上说多个类放一个文件下也没问题),然后相同功能的一组类文件组合成了一个包。
在C++中,namespace就相当于java中的包,单纯的头文件是不需要命名空间的,如果你想把多个类、辅助函数等等组合成一个整体,就用namespace。
命名空间是防止名称碰撞的机制,比如我有一个class A,你也有一个class A,那么我们在同一个程序下的话到底是用你的A还是我的A?在C++中就这样用I::A、Y::A,而java中则是I.A,Y.A
不需要.h的头文件,是C++的标准头文件,里面都包含了namespace std,如果是标准出现前的C++头文件,如<iostream.h>这些都不包含namespace,那个时候还没这个概念。新的头文件是标准出现后重写的,防止命名碰撞问题(VC++6.0是标准之前的编译器,允许使用旧版的头文件,但这些都不包含namespace,而新编译器都不再使用带.h的C++标准头文件)如果是C的头文件,如<stdio.h>就不包含namespace,C++重写的C的头文件都包含std,名称为<cXXX>,如<cstdio>
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
请问中国的九朝古都位于现在哪个地方?
棕刷是什么做成的
冠京隆市场(南门)怎么去啊,有知道地址的么
蚂蚁田在什么地方啊,我要过去处理事情
阿强文具这个地址在什么地方,我要处理点事
和异地女朋友聊天应该找什么话题
海尔洗衣机里面的纸屑拿掉了可以吗
搞笑段子:是扫一扫还是摇一摇
做好的企业宣传片如何进行视频推广?
苏州樱花燃气热水器 行吗
芜湖汇成锅炉化工设备制造有限公司在哪里啊,
甘肃盛产什么?
求·~网名
阳历1987年 5月13是 什么星座
Can i get you a drink? That's very ni
推荐资讯
我国房建工程现行的桩基础施工共分几类?
北京哪个密室逃脱好玩,求万能的吧友推荐
笔迹指纹鉴定需要多少钱 到什么地方鉴定
冰箱里的水流不下去是什么问题?
我是一名大专生,学电子商务的我应看那些书,
lol石业在哪个平台直播
西南的文科名牌大学有哪些
全峰快递到湖州转件给圆通快递后就没显示地址
谁有《我看见你哭》这首诗的中文版
会计在报帐时都要做的工作,请指教一下
runtime error 216 at 00402D73
英雄联盟 LOL英雄们死后去哪
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?