一、namespace
1.1 namespace 的引入
在 C/C++ 中,变量、函数和类的名称都存在于全局作用域中,极易产生冲突。使用命名空间的目的是对标识符进行本地化,避免名字污染。
C 语言中的冲突示例:
#include <stdio.h>
#include <stdlib.h>
int rand = 6;
int main() {
printf("%d", rand);
}
上述代码中,自定义的 rand 可能与标准库冲突。C++ 引入 namespace 正是为了解决这一问题。
C++ 优化方案:
#include <stdio.h>
namespace m {
int rand = 6;
}
int main() {
printf("%d", m::rand);
}
1.2 namespace 的定义
定义命名空间需使用 namespace 关键字,后跟名字及一对花括号。命名空间中可定义变量、函数或类型。
namespace m {
int a = 6;
int Add(int a, int b) {
return a + b;
}
struct Node {
struct Node* next;
int val;
};
}
- 本质:定义出一个独立的域,与全局域隔离。不同域可定义同名变量。
- :影响编译时语法查找逻辑(声明或定义出处)。局部域和全局域还影响生命周期,而命名空间域和类域不影响。


