您的位置:首页 > 编程语言 > C语言/C++

逐梦C++之一:命名空间

2016-01-30 14:03 260 查看

命名空间

1.命名空间来历(缘起)

命名空间的由来在百度百科中是这样说的,我觉得颇有道理,也容易令人理解:

命名空间是用来组织和重用代码的 。如同名字一样的意思,NameSpace(名字空间),之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你所使用的库函数或变量就是在该名字空间中定义的,这样一来就不会引起不必要的命名冲突问题。

这样我们就可以解决类似于“两个叫相同名字的人怎么区别”的问题,我们可以通过他们来自于哪个地方(即命名空间)来得到答案。比如,北京的张三,上海的张三,我们可以通过地域来区分这两个人。

2.命名空间定义

我们先入例子:

例1.1.1

#include <iostream>
using namespace std;

int main()
{
cout<<"hello World!"<<endl;
return 0;
}


using namespace std;
这句话就是用来声明使用命名空间的。

当一个C++项目分给多个人做时,难免有时候大家会命名相同的变量,

比如张三在项目里命名了
float
类型的变量price,而李四命名了int类型的price,而在接下来的

项目中,如果不使用命名空间,你将无法确定price属于哪一个人命名的变量。所谓命名空间,就是

在系统分配给你的一个空间类定义属于你自己的变量名,当你要使用该空间的变量或者函数时,你

声明一下就可以了。

命名空间定义:

namespace 命名空间名{
//命名空间的变量
//.............
//命名空间的函数
//.............

}//(此处无分号)


例1.1.2

namespace hui{
//命名空间的变量
char sex;
int age;
//命名空间的函数
void work();
void out_age()
{
printf("hui::age=%d\n",age);
}
}


3.命名空间的声明方式:

方式一:(使用命名空间中的单一元素<变量/函数>)

using 命名空间名::元素名;

ep:using hui::age;

方式二:(使用命名空间中的所有元素)

using namespace 命名空间名;

ep: using namespace hui;

4.综合的例子:

//==================================================
//程序描述:C++中的命名空间(防止命名冲突)
//Date:2016年1月8日   by  Ye_wolf
//备注:
//==================================================

//========================【头文件部分】=============================
#include <iostream>
#include <stdio.h>
using namespace std;//使用标准命名空间,如果接下来的的代码没有指定命名空间,皆默认为std命名空间

//========================【命名空间】==============================
//-----------------------------hui命名空间------------------------------
namespace hui{
//命名空间的变量
int age;
//命名空间的函数
void out_age()
{
printf("hui::age=%d\n",age);
}
}
//-----------------------------yu命名空间------------------------------
namespace yu{
//命名空间的变量
int age;
//命名空间的函数
void out_age()
{
printf("yu::age=%d\n",age);
}
}

//=========================【主函数】============================
int main()
{
{
using namespace hui;
age=21;//该变量存在于hui命名空间
out_age();
}

{
using namespace yu;
age=20;//该变量存在于age命名空间
out_age();
}

cout<<"niqi"<<endl;//cout存在标准命名空间std中
return 0;
}


运行截图:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: