命名空间
命名空间是用来允许程序员使用相同的变量、函数和类的名称而不引起冲突的一个限定的作用空间,在同一个命名空间中不能使用同名的名称,但允许不同的命名空间之间使用相同的名称,通过使用命名空间程序员可以重复使用清晰易懂的名字作为名称,避免命名冲突或名字污染,导致代码的可读性大大降低。
命名空间的定义
使用关键字namespace定义一个命名空间,后面跟上这个命名空间的名字,然后接一对**{}**,{}中为命名空间的成员
namespace sample1
{
//命名空间可以定义变量、函数和类型
int value =5;
int Add(int number1 , int number 2)
{
return number1 + number2;
}
struct student
{
char name[20];
int age;
int sex;
}
namespace sample2
{
//命名空间可以嵌套定义
int v1=1;
}
}
命名空间的使用
命名空间有三种使用方式:
-
使用命名空间和作用域限定符
int main()
{
printf(“%d”,S::a);
return 0;
}
- **使用using将命名空间某个成员引入**
```c++
using S::b
int main()
{
printf("%d",S::a);
printf("%d",b);
return 0;
}
-
使用namespace命名空间引入
using namespace S int main() { printf("%d",S::a);//使用namespace后命名空间和作用域限定符可加可不加 printf("%d",b); return 0; }
命名空间的特点
- 同一个工程中允许存在多个相同名称的命名空间,编译器最后会将同名的命名空间合在一个命名空间中
- 在一个工程中test.h和test.cpp会被编入到同一个文件中
- 在编写代码时,如果有多个函数名相同但命名空间不同的函数,编译器会优先局部查找(如在类里查找),再全局查找。