目录
命名空间里面包含了逻辑结构上相互关联的一组类、函数、模板等。命名空间像是一个容器,把某些在逻辑结构上相关的 “ 对象 ” 放在一起并与外界区分。特别的,命名空间里的变量名或类名可以和命名空间外的变量名或类名重名。
格式
namespace 命名空间的名字
{
声明块
}
其中声明块中可以包含变量、类、函数等。例如:
namespace S
{
int x;
void FunA()
{
...
}
}
使用
在命名空间外使用命名空间内的成员: 命名空间的名字加上作用域运算符 :: 。
参考上例 namespace S,若访问 x,可写成 S::x;访问 FunA() 则为 S::FunA()
命名空间的嵌套
具有分层屏蔽的作用。例如:
namespace S1
{
namespace S2
{
int x;
void FunA()
{
...
}
}
}
使用
若要访问 x,则可写为 S1::S2::x,同理,访问 FunA() 则可写为 S1::S2::FunA()
using声明
若命名空间内的某个成员使用了 using 声明,那么这个成员在程序的后续使用中,可直接使用成员名,无需添加限定修饰名。
以关键字 using 开头后跟命名空间内的成员名
namespace S2 中 int x 的 using 声明为:using S1::S2::x;
注意
using namespace 后不能加类名或变量名。同上,若 namespace S2 中 int x 的 using 声明写为 using namespace S1::S2::x 便是错误的。
using 指示符可以一次性地使命名空间内的全体成员被直接使用。
using 指示符的使用: 以关键字 using namespace 开头后跟命名空间名字。特别的,std 命名空间声明和定义了标准 C++ 库中的所有组件,使用 using namespace std; 则可使用标准 C++ 库中的所有成员。