名称空间
1. 概念
- 生活中的名字冲突
- 程序可能会调用多个库,不同的库里面可能存在相同的全局变量名,全局函数名,类名等等。
- 库供应商为了避免与其他供应商或者用户自定义的名字相冲突,常常将库中的所有名字放置在自己的名字空间中
2. 定义语法
namespace spaneName{
// 声明或者定义的相关内容
}
- .h和.cpp文件中都要使用
3. 用法
- 使用名字空间中名字(变量名、函数名…etc)时必须要指明名字空间。
一般用法
spceName::name //每次使用某个用名字时都带上名字空间<br /> 例如: std::cout
使用using编译指令
using namespace spaceName; //指定使用一个名字空间,使用该名字空间下的所有名字时都省略名字空间前缀<br /> 例如: using namespace std; //std是C++标准库的名字空间
4. 无名名字空间
- 如果定义某个名字时没有放入某个命名空间下,则默认放在无名空间下
使用无名名字空间下的名字:
namespace girl{ void teaching(){ cout << “女孩,教数学很厉害” << endl; } void singSong(){ cout << “女孩,唱歌很好听” << endl; } void dancing(){ cout << “女孩,跳舞很得劲” << endl; } }
```cpp
#include "girl.h"
#include <iostream>
using namespace std;
using namespace girl;
void teaching(){
cout << "男孩,教物理很厉害" << endl;
}
int main(int argc, char** argv){
::teaching(); // 访问男孩的方法
girl::teaching(); // 访问女孩的方法
singSong(); // 访问女孩的方法
dancing(); // 访问女孩的方法
return 0;
}