名字空间!!~~!!!?????!~!

dama2003 2003-09-19 10:17:56
昨天刚买了C++ Primer第四版中文版,看了名字空间的概念,晕了一头雾水,没搞懂,有高手能解释一下吗??
...全文
32 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lemon520 2003-09-19
  • 打赏
  • 举报
回复
假如有两个班级(1班和2班),都有一个叫小强的人!
怎么区别他们?这就是名字空间的作用,也就是班级的编号!要找其中一个小强,就必须按照
"1班的小强"和"2班的小强"这样的形式。其中“1班”和“2班”就是C++中的名字空间名;“的”
就是::符号!
fishsward 2003-09-19
  • 打赏
  • 举报
回复
名字空间其实就是为了减少命名冲突

c程序员很容易"用光"所有的变量名字,而导致命名冲突,class的
出现,这种情况好了很多,但是还是会出现命名冲突,namespace的出现,
如果还有名字冲突,程序员就应该反省了,^_^

这就是它的作用!!
colebin 2003-09-19
  • 打赏
  • 举报
回复
是不是向java里面包(package)的概念
这样即使有同名类,也能区分开
robbie24 2003-09-19
  • 打赏
  • 举报
回复
呵呵,穷鬼+菜鸟=我!说的蛮生动的
你可以这么去想
学过C的话,你因该知道,在C中,全局域这个东西是唯一的,麻烦的问题一般都出现在一些相对较大的项目中,一旦很多的变量名出现便会造成‘名字空间污染’.
为了避免这种情况,namespace就诞生了

hslinux 2003-09-19
  • 打赏
  • 举报
回复
名字空间,其实和目录差不多,using 名字空间; 就和set path一样,你set path后,直接就可以执行你+到path里的目录里的程序;你 using 名字空间;以后,就可以在你的程序文件里直接使用那个名字空间里的东西(类,函数。。。);

例如:
//IBM.h
namespace IBM{
int ddddd=100;
void aaaaa(int);
..
}

//test.cpp
include "IBM.h"

using IBM

void main()
{
int cccc=ddddd;//ddddd就是IBM里的ddddd
aaaaa(cccc); //aaaaa就是IBM里的aaaaa()
}

ccwwbb 2003-09-19
  • 打赏
  • 举报
回复
比如A和B两家公司出的头文件都有iostream,所以你必须指明是A的还是B的,要不然编译器它不知道,它很笨
std是标准的,一般都用这个
也可以是下面的格式:
int main()
{
int abc;
using std::cout<<"hello";
using std::cin<<abc;
}
它和下面的语句是等价的:
using namespace std;
int main()
{
int abc;
cout<<"hello";
cin<<abc;
return 0;
}
bing_huo 2003-09-19
  • 打赏
  • 举报
回复
继续看啊
dama2003 2003-09-19
  • 打赏
  • 举报
回复
自己顶顶!~~~~~~
ssbull 2003-09-19
  • 打赏
  • 举报
回复
楼上的比喻有道理,你就把名字空间看成是文件夹,不同文件夹里名字相同的文件是不相互冲突的,名字空间也就是这个目的!

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧