1、名字空间(namespace)的概念用来直接表示本属一体的一组特性,例如库代码。
名字空间的成员都位于相同的作用域中,无需特殊符号即可相互访问,而从名字空间外访问它们就需要显式符号。
2、显式限定:我们可以在名字空间的定义中声明一个成员,稍后用“名字空间名::成员名”的语法定义它。
namespace Parser{
double expr(bool); //声明
double term(bool);
double prim(bool);
}
double val = Parser::expr(); //使用
double Parser::expr(bool b) //定义
{
//...
}
3、全局作用域也是一个名字空间,可以显式地用::来引用。
int f(); //全局函数
int g()
{
int f; //局部变量
f(); //错误:不能调用一个整形变量
::f(); //正确:调用全局函数
}
4、using声明将避免频繁使用显示限定写法。
using指示允许我们在所在作用域中无须使用限定即可访问某个名字空间中所有名字。
5、名字空间是开放的。
即,你可以从多个分离的名字空间声明中向一个名字空间添加名字。
namespace A{
int f(); //A包含成员f()
}
namespace A{
ing g(); //A现在有两个成员,f()和g()
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)