逐梦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; }
运行截图:
相关文章推荐
- 20160129.CCPP体系详解(0008天)
- C语言之链表————(转载)
- CF618C - Constellation
- CF618A - Slime Combining
- C++优先队列 合并果子
- C/C++和Java的交互详解
- c语言实现一个简单的通用动态数组
- C++获得文件夹下所有文件的路径及文件名
- C++实用技巧排序算法
- 递归求n!
- 进制转换
- 字典树C语言实现
- 计时函数
- VC++的内联汇编
- C++ inline内联函数使用注意事项
- 详解C/C++中预处理器
- C++容器中勿使用memset,memcpy等
- 2012年第三届蓝桥杯(C/C++)预赛题目及个人答案(欢迎指正)
- C语言中无符号数和有符号数相加问题
- C++视频教学