命名空间的由来
命名空间(namespace):即一个新的作用域,其中的内容都局限于该命名空间中 可以定义变量和函数,使用时使用域作用限定符:: 这样可以避免变量或者函数命名冲突问题
使用命名空间的方式
1、使用域作用限定符:: :
指明使用的变量所在的命名空间,使用方法为命名空间加域作用限定符,例如 namespace名称::变量/函数名
namespace hyx
{
int a = 10;
int b = 20;
int Add(int a, int b)
{
return a + b;
}
}
int main()
{
//printf("%d\n", a, Add(a + b));//报错原因是因为变量和函数都定义在命名空间中 需要指定域
printf("%d,%d\n", hyx::a, hyx::Add(hyx::a, hyx::b));//运行结果为10,30
return 0;
}
2、使用using 将命名空间导入:
对于经常使用的变量或者函数,如果每次都需要给变量或者函数指定域作用限定符的话,会显得很麻烦,于是可以采用using 命名空间::函数/变量名的方式使用命名空间内的变量/函数,例子如下:
namespace hyx
{
int a = 10;
int b = 20;
int Add(int a, int b)
{
return a + b;
}
}
using hyx::a;
int main()
{
printf("%d\n", a);//输出结果为10
return 0;
}
3、使用using namespace命名空间引入
使用using namespace 命名空间名称,该方法相当于将命名空间中的内容全部释放出来 ,进行大项目操作时不推荐该用法,该方法相当于将命名空间内的内容全都暴露出来,破坏了封装的完整性,具有安全隐患,使用范例如下:
namespace hyx
{
int a = 10;
int b = 20;
int Add(int a, int b)
{
return a + b;
}
}
using namespace hyx;
int main()
{
printf("%d,%d\n", a, Add(a, b));//输出结果为10,30
return 0;
}