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

所属分类: 软件编程 / C 语言 阅读数: 68
收藏 0 赞 0 分享

命名空间

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

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

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

using namespace std;

或者还有这样的:

using std::string;

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

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

namespace Jack {
 double pail;
 void fetch();
}

namespace Jill {
 double pail;
 void fetch();
}

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

Jack::pail = 12.34;
Jill::pail = 56.78;
Jack::fetch();

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

int x;
std::cin >> x;
std::cout << x << std::endl;

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

using std::cin;
using std::cout;
using std::endl;
int x;
cin >> x;
cout << x << endl;

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

using namespace std;
int x;
cin >> x;
cout << x << endl;

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

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

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

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

有些名称空间没有名字:

namespace {
 int ice;
 int water;
}

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

static int counts;// 不推荐
namespace {
 int counts;// 推荐
}
int main() {
 ...
}

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

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

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

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

更多精彩内容其他人还在看

利用C语言来求最大连续子序列乘积的方法

这篇文章主要介绍了利用C语言来求最大连续子序列乘积的方法,基本的思路以外文中还附有相关ACM题目,需要的朋友可以参考下
收藏 0 赞 0 分享

用C语言判断一个二叉树是否为另一个的子结构

这篇文章主要介绍了用C语言判断一个二叉树是否为另一个的子结构,是数据结构学习当中的基础知识,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现的阶乘,排列和组合实例

这篇文章主要介绍了C语言实现的阶乘,排列和组合的方法,涉及C语言数学运算的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言查找数组里数字重复次数的方法

这篇文章主要介绍了C语言查找数组里数字重复次数的方法,涉及C语言针对数组的遍历与判断技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言简单实现计算字符个数的方法

这篇文章主要介绍了C语言简单实现计算字符个数的方法,涉及C语言针对字符串的简单遍历与判定技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

c实现linux下的数据库备份

本文给大家简单介绍下c实现linux下的数据库备份的方法和具体的源码,十分的实用,有需要的小伙伴可以参考下。
收藏 0 赞 0 分享

C++获得文件状态信息的方法

这篇文章主要介绍了C++获得文件状态信息的方法,包括文件状态信息、文件所在磁盘盘符、文件创建时间、访问时间及修改日期等,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言按关键字搜索文件夹中文件的方法

这篇文章主要介绍了C语言按关键字搜索文件夹中文件的方法,涉及C语言文件操作及字符串查找的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享

C语言之字符串模糊查询方法的实现

本篇文章主要为大家介绍字符串模糊查询的C语言程序编写方法,有需要的朋友可以参考下
收藏 0 赞 0 分享

C语言实现BMP转换JPG的方法

这篇文章主要介绍了C语言实现BMP转换JPG的方法,涉及C#图片格式转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多