名字空间
-
1. 什么是名字空间
- 名字空间也称为命名空间, 表示一个作用域
- 定义在名字空间的实体称为名字空间成员
- 名字空间作用
- 避免名字冲突
- 划分逻辑单元
-
2. 名字空间定义
- 使用namespace关键字定义名字空间
- 名字空间成员可以是全局变量, 函数, 类型, 名字空间()
namespace 名字空间命名 {
int g_num = 0; //全局变量
void func(...) {...}; //函数
struct Student {...}; //结构体类型
namespace 名字空间命名{} //嵌套定义名字空间
}
-
3. 名字空间成员使用(名字空间成员不能直接使用, 主要有3种访问方法 )
- 3.1 作用域限定操作符 "::"
- 空间名::要访问的成员
- 3.2 名字空间指令
- using namespace 空间名
- 该指令以后的代码, 指定名字空间都可见, 可以直接访问
- 3.3 名字空间声明
- using 空间名::要访问的成员
- 相当于声明一个局部变量, 优先级大于全局同名变量
- 3.1 作用域限定操作符 "::"
-
4. 无名名字空间
- 没有放在任何名字空间的成员将被放在无名名字空间
- namespace {无名空间的成员;}
- 显示访问 "::无名空间的成员"
-
5. 名字空间嵌套
namespace ns1 {
namespace ns2 {int num = 100}
}
std::cout << ns1::ns2::num <<endl; //100