它是个啥
-
硬核理解——“地基”
-
就像A小区有一栋楼房叫6#,B小区恰好也有,我们要去B小区的6#怎么办?所以要去的话就要加个前缀,我要去B小区的6#,这个A小区和B小区就是命名空间了
为什么需要有namespace
- 先来看个例子
// 微信朋友圈模块,名字贼长
void wechat_moments_add_post(){}
// 使用namespace
namespace wechat{
namespace moments{
void add_post(){
}
}
}
-
将逻辑相关的标示符限定在一起,组成相应的命名空间
-
使整个系统模块化,更加简洁清晰
-
还解决了不同库变量名称相同的问题,避免命名冲突
使用风格
// 第一种
std::cout << "hello" << endl;
// 第二种 推荐这样单个导入
using std::cout;
using std::endl;
using std::string;
// 第三种 导入标准库组件,不推荐
// 写demo才用,项目中不要,避免命名泛滥导致冲突
using namespace std;
-
在C++中,我们常用的头文件为不带“.h”后缀的头文件,而这些头文件里所包含和定义的标识符在std空间中,所以我们使用C++时经常需要加上
-
而原C语言的头文件为带“.h”后缀的头文件,这些头文件里所包含和定义的标识符在全局命名空间中,不需要声明使用std空间
细节
- 允许跨名称空间的重载