命名空间是c++中的一个非常基本的概念,其实在其他很多语言中也有类似的概念,有点类似比较高级版本的C语言中的头文件作用域。
最常见的命名空间引用语句时 using namespace std; 这句的意思是在本语句之后可以引用std命名空间中的接口,std值标准库中的命名空间。
命名空间的主要作用是解决同名冲突。设计者可以根据需要指定有名字的空间域,把一些全局对象放在不同的命名空间中,从而与其他全局对象区分开来。
定义一个命名空间:
namespace tst
{
int a;
int b;
}
那么 变量a,b就在命名空间内。其他文件使用需要使用using namespace tst;或者tst::a .
一下是一个小例子,大家可以修改修改,体会一下命名空间的概念。
#include <stdio.h>
int num = 0;
namespace nba {
int num = 88;
void func();
namespace cba {
void cba_func();
namespace nba {
int num = 778;
};
};
namespace nba {
int num = 667;
};
};
int main(void)
{
printf("%d\n", nba::num);
// nba::func();
nba::cba::cba_func();
return 0;
}
void nba::cba::cba_func()
{
printf("in cba\n");
}
void nba::func()
{
printf("hell\n");
}