一、简单介绍
1.命名空间
C++相当于强化版的C语言,命名空间就是其“强化”的一项内容。
在C++中,名称(name)可以是符号、常量、变量、结构体、函数等,为了避免大规模的程序设计中,或者程序员在使用不同的C++库时,对这些标识符的命名发生冲突,
c++引入了关键字namespace(命名空间),以便更好地控制标识符的作用域。
以std为例,它是C++标准命名空间,C++标准程序库中所有标识符都被定义在std中,比如类iostream,vector等。使用时要加上using声明
#include<iostream>
using namespace std;
其中,第一行#include声明很好理解,与c语言中对stdio.h声明相似
而第二行 using namespace std即为对C++命名空间进行使用的声明。
2.简单举例
在初学时我对命名空间的定义和使用有不少的疑惑,但是简单举例就可以明白了。
以下是举例:
在一栋写字楼里,有A B两个公司,在这两家公司里,都有一位叫张三的员工,一男一女。
我对在A公司工作的张三倾慕已久,在今天鼓起勇气站在写字楼公司楼下大喊:“张三我喜欢你很久了!!”
然而下楼来见我的却是B公司的张三,于是闹了个乌龙,表白计划泡汤。
因此,我表白的话语中,应该突出一个关键的信息:A公司的张三,我喜欢你。
这就可以类比于C++中对于命名空间的使用。
我深爱的张三,是定义在公司A的张三;我不认识的张三,是定义在公司B里的张三
3.使用命名空间
对应在C++中,如何引用不同命名空间的标识符呢?
我们先定义几个命名空间。
namespace A
{
int n;
}
namespace B
{
char c;
namespace C
{
int m;
struct student
{
char name[64];
int number;
}
;
}
}
其中 命名空间A里包含一个整型n,B中包含一个字符c,嵌套包含了命名空间C(C中包含一个整型m和一个结构体student。
有以下几种方法来进行引用:
(1)使用using声明
int main()
{
using namespace A;
n = 100;
cout << n;
}
以上代码声明了使用命名空间A,将A中的整形变量n修改为100并输出,结果是100。
(2)使用“::”操作符
cout << A::n;
这种方法也可以使用命名空间。