以下为知识DOC为大家进行整理的相关内容,希望对大家有所帮助!
所谓,是指标识符(可以是变量或者函数)的各种可见范围。在这个名空间中可以定义一组变量和函数,这些变量和函数的作用范围一致,可以将这些变量和函数称为这个名空间的成员。命名空间不仅可以避免名称冲突,还可以保持代码的局部性。命名空间包括有名命名空间(变量或函数要在其他地方复用的时候使用)和无名命名空间(代码块无复用需求的时候使用空间名称空间名称,变量和函数仅在本文件可用)。
一、有名命名空间
定义格式如下:
namespace 空间名1{ var1; //变量 fun1; //函数 namespace 空间名2 { var2; func2; }}
使用格式如下:
(1)空间名1::var1 (2)空间名1::空间名2::func2(3)namespace 空间名3 = 空间名1::空间名2; 空间名3::func2; //使用别名的方式,效果和(2)相同
有时候为了简化命名空间下变量和函数的使用,会使用using,具体使用方法如下
using namespace 空间名1; // 此时如果再想使用 空间名1 下面要使用fun1的时候就可以直接调 fun1(而不是 空间名1::fun1)using namespace std;//这个表示使用std空间
注意:using可以放在函数的外面,也可以放在函数的里面。如果放在函数的外面,那么与函数平级的的其他函数也会收到 using 作用域的影响;如果放在函数里面空间名称,using只会影响函数自身。
例子:#includeusing namespace std;namespace A { int var1 = 1; void func1(int var){ cout<<"A::var:"<<var<<endl; } namespace B { int var1 = 2;
int var2 = 3;
void func1(int var1) { //函数名与namespace A下面的函数fun1一样
cout
//调用namespace A::B 下面的fun1
AB::func1(3); //print B::var1:3
//调用namespace A 下面的fun1
A::func1(2); //print A::var:2
using namespace A; //使用using把namespace限定到A下面的fun1
func1(5); //print A::var:5
return 0;
}
二、无名命名空间
无名命名空间定义格式:
namespace { var1; func1;}
使用举例
#includeusing namespace std;namespace { int var1 = 1; void fun1(int var){ cout<<"var:"<<var<<endl; } namespace B { int var1 = 2; int var2 = 3; void fun1(int var1) { cout<<"B::var1:"<<var1<<endl; }
}
}
////无名命名空间的函数(或变量)等效于全局函数(或变量),所以下面2个定义是不合法的
/*void fun1(int var){
cout<<"var:"<<var<<endl;
}
int var1 = 2;*/
int main()
{
//无名命名空间的函数(或变量)使用方式与全局变量相同
fun1(15); //print var:15 ,由此可见无名命名空间其实可以直接去掉
return 0;
}
本文地址: https://www.zhishidoc.com/19350.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 859089669@qq.com 举报,一经查实,本站将立刻删除。