C++ namespace 的使用:
namespace(命名空间),用户可以用namespace关键字定义不同的命名空间,来防止某些函数,类,模板等的冲突(重复)。
命名空间解决的问题:同名冲突
命名空间的命名空间成员可以是声明的形式,也可以是定义的形式
命名空间中的成员是全局成员,只是包含在命名空间中了,使用这些成员时,要使用命名空间限定的形式:ns::a
命名空间成员类型:
变量(可以初始化)
常量
函数
类
结构体
模板
命名空间(命名空间的嵌套)
命名空间的别名:
用来代替较长的命名空间
生成:namespace TV=Televsion;
使用using关键字生命命名空间的成员
在using语句作用范围内使用using声明命名空间的某个成员之后,在这个作用域内使用这个成员都可以不用命名空间限定。
using 关键字一次只能声明一个命名空间成员
using namespace 命名空间;
可以一次声明命名空间的所有成员,但是使用的前提是不能有同名冲突
命名空间中的成员在本文件可以当作全局变量来使用
无名命名空间只能在本文件使用
命名空间注意事项:
1:命名空间的定义只能写在全局上,不能写在局部范围内
2:命名空间可以嵌套
嵌套命名空间中成员的调用:
3:命名空间可以随时入新成员:
#include “iostream”
namespace A
{
int a;
int b=10;
}
namespace A
{
int c;
}
int main()
{
}
4:命名空间定义后无分号
大型程序往往会使用多个独立开发的库,这些库又会定义大量的全局名字,如类、函数和模板等。当应用程序用到多个供应商提供的库时,不可避免地会发生某些名字相互冲突(重复)的情况。多个库将名字放置在全局命名空间中将引发命名空间污染(namespace pollution)。
更多细节可参考:
https://blog.csdn.net/fengbingchun/article/details/78575978?utm_source=app&app_version=4.15.0&code=app_1562916241&uLinkId=usr1mkqgl919blen