词条信息

xiazaiwo
xiazaiwo
进士
词条创建者 发短消息   

相关词条

热门词条

更多>>
iphone怎么设置手写输入?
偶尔我们会遇上一些会写不会读的字,这个时候你就需要开启手写输入。今天咱们就来讲讲:苹果手机的自带输入法怎么设置...
2019支付宝扫福字集福卡教程
2019支付宝扫福字集福卡活动时间从1月25日开始,扫福字可以获得五福卡。2019支付宝扫福字集福卡教程打开支...
2019年,我们需要加强关注网络安全的6大原因
据外媒报道,网络安全越来越重要,但一些公司仍然不愿意投入必要的资源来保护其基础设施免受网络攻击,并认为他们也不...
8种寻找机器学习数据集的方法
在训练机器学习模型时,找到合适的数据集一直是个棘手的问题。 近日,亚马逊AWS高级技术顾问Will...
起底网络黑灰产利益链
“薅上一天,够吃一年。”这句“羊毛党”中流行的口头禅在日前拼多多被“薅羊毛”事件中成为现实,并揭开了国内网络黑...
解决网 >>所属分类 >> C/C#   

C++中名称空间namespace的使用方法示例

标签: 暂无标签

顶[0] 发表评论(0) 编辑词条

命名空间

在C++中,名称(name)可以是符号常量、变量、宏、函数、结构、枚举、类和对象等等。为了避免,在大规模程序的设计中,以及在程序员使用各种各样的C++库时,这些标识符的命名发生冲突,标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。

MFC中并没有使用命名空间,但是在.NET框架、MC++和C++/CLI中,都大量使用了命名空间。

我们常常会见到这样的语句:

?
1
usingnamespacestd;

或者还有这样的:

?
1
usingstd::string;

这些其实就是使用了C++的名称空间技术。

什么是名称空间呢?名称空间可以看做一个声明区域,其区域内的变量在内部有效,比如假设有两个名称空间:

?
1
2
3
4
5
6
7
8
9
namespaceJack {
 doublepail;
 voidfetch();
}
 
namespaceJill {
 doublepail;
 voidfetch();
}

两个名称空间有着一样的变量,但因为是在不同的名称空间内,所以互相不会发生冲突。我们在使用时可以这样调用:

?
1
2
3
Jack::pail = 12.34;
Jill::pail = 56.78;
Jack::fetch();

所以,我们有时候也会看到这样的代码:

?
1
2
3
intx;
std::cin >> x;
std::cout << x << std::endl;

但如果我们使用了using声明,就可以简单一点:

?
1
2
3
4
5
6
usingstd::cin;
usingstd::cout;
usingstd::endl;
intx;
cin >> x;
cout << x << endl;

或者更简单的,我们可以使用using编译指令:

?
1
2
3
4
usingnamespacestd;
intx;
cin >> x;
cout << x << endl;

其中,cin、cout、endl都是存在于std名称空间内的。

上面其实是两种using,一个叫using声明,一个叫using编译指令。using声明用于声明名称空间内的某一个变量或函数,而using编译指令会将整个名称空间全部都声明。

一般而言我们建议对需要的变量或函数使用using声明,这样就不用一股脑全部声明,难保有些变量或者函数在别的名称空间内也有,这样又会产生冲突,实际上这是不允许的。

名称空间也是可以嵌套的。

有些名称空间没有名字:

?
1
2
3
4
namespace{
 intice;
 intwater;
}

这种名称空间因为没有名字,所以不能用using声明和using编译指令来操作,也就不能再其他文件使用,只能在当前文件声明处到作用域结尾可用,这也就类似于static的作用了。实际上C++不建议使用static,而更推荐这种做法:

?
1
2
3
4
5
6
7
staticintcounts;// 不推荐
namespace{
 intcounts;// 推荐
}
intmain() {
 ...
}

而名称空间用的最多的地方,就是供其他文件去访问了。就像std一样。

对于名称空间的使用,也有一些指导原则:

  • 使用已命名的名称空间中声明的变量,而不是外部全局变量或静态全局变量。
  • 如果开发函数库或者类库,将其放在一个名称空间中。
  • 不要过度使用using编译指令。
  • 不要在头文件使用using编译指令,以防产生未知影响。
  • 导入名称时,首选使用using声明。
  • 对于using声明,首选将其作用域设为局部而不是全局。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对http://www.xiazaiwo.net的支持。

 

 

参考资料
[1].  v   http://www.xiazaiwo.net/tech/ziyuan/17551.html

附件列表


按字母顺序浏览:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

→我们致力于为广大网民解决所遇到的各种电脑技术问题
 如果您认为本词条还有待完善,请 编辑词条

上一篇公立医院告别药品加成
下一篇拼音输入法哪个好

0
1. 本站部分内容来自互联网,如有任何版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
2. 本站内容仅供参考,如果您需要解决具体问题,建议您咨询相关领域专业人士。
3. 如果您没有找到需要的百科词条,您可以到百科问答提问或创建词条,等待高手解答。

关于本词条的提问

查看全部/我要提问>>