4. 名字空间嵌套声明
在声明名字空间时,可以实现嵌套声明,即名字空间内仍然可以再声明内部更深一层的名字空间,可以实现多层名字空间的声明。
示例:
在 Outer 名字空间内部嵌套声明 Innter 名字空间。
namespace Outer {
int total = 100;
void print_total(void) { std::cout << total << std::endl; }
namespace Inner {
int sub_count = 0;
void other(void) {
std::cout << "this is Inner namespace" << std::endl;
}
}
}
当有嵌套声明的名字空间时,可以使用作用域限定符(::) 来指定名字空间内部的标识符,也可以使用 using 或者 using namespace 来指定一个或全部标识符。用法几乎和没有嵌套的名字空间的用法一致。如:
- 使用作用域限定符访问名字空间内的标识符。
std::cout << Outer::total << std::endl;
Outer::print_total();
std::cout << Outer::Inner::sub_count << std::endl;
Outer::Inner::other();
- 使用
using使用名字空间中的标识符
using Outer::total;
using Outer::print_total;
std::cout << total << std::endl;
print_total();
using Outer::Inner::sub_count;
using Outer::Inner::other;
std::cout << sub_count << std::endl;
other();
- 使用
using namespace使用名字空间中的标识符
using namespace Outer;
std::cout << total << std::endl;
print_total();
using namespace Outer::Inner;
std::cout << sub_count << std::endl;
other();