目录
命名空间的作用
命名空间是为了避免因为大量变量名,函数名或者类名造成的名字冲突问题,而对标识符的名称进行本地化的手段
命名空间实际上是一种作用域,作用域包括:全局域,局部域,命名空间域和类域
例如:
在C语言中:
#include<stdio.h>
#include<stdlib.h>
int main()
{
int rand = 0;
//...
return 0;
}
自定义的变量rand与库函数的rand函数同名,会报错:重定义
命名空间的定义
命名空间要使用namespace关键字,后面加空间名,再在后面的{ }里写命名空间的成员
正常定义
namespace bantal
{
int rand;
char ch;
struct data
{
int size;
int arr[100];
};
int Add(int a, int b)
{
return a + b;
}
}
命名空间可以嵌套定义
namespace bantal
{
int rand;
char ch;
namespace in
{
struct data
{
int size;
int arr[100];
};
int Add(int a, int b)
{
return a + b;
}
}
}
一个工程中定义多个名字相同的命名空间
//在bt.hpp中定义:
namespace bantal
{
int jk;
}
//在test.cpp中定义
namespace bantal
{
int rand;
char ch;
namespace in
{
struct data
{
int size;
int arr[100];
};
int Add(int a, int b)
{
return a + b;
}
}
}
命名空间的使用
-
加命名空间名称和作用域限定符(::)
int main()
{
bantal::rand = 10;
printf("%d", bantal::rand);
return 0;
}
-
将命名空间的某个成员导入
using bantal::ch;
int main()
{
ch = a;
printf("%c", ch);
return 0;
}
-
将整个命名空间导入
using namespace bantal;
int main()
{
printf("%d", rand);
return 0;
}