命名空间
模块化(modularization):
- 把程序划分为多个组成部分
- 通过把程序代码分散到多个文件里,等编译程序时再把那些文件重新组合在一起实现
命名空间(namespace):相比起 C 语言,这是 C++ 里新增加的东西,编写的程序越多,编写的程序越复杂,就越需要使用命名空间
为了防止变量名重复,有时需要使用很长的变量名,命名空间解决了这个问题。可以这样创建命名空间
namespace name
{
// 函数或变量
};
当需要使用命名空间中的函数或变量时,可以显式地 using 命名空间
using namespace name;
using namespace::name;
但是建议不这样使用命名空间( std 本身是一个类对象),因为 using 指令的出现位置决定从命名空间里提取出来的东西能在哪个作用域内使用;如果放在所有函数声明的前面,它将拥有全局性;如果放在某个函数里,它只能在这一函数中使用。通常只导入需要使用的命名,例如
#include <iostream>
using std::cin;
using std::endl;
存在一个默认的全局命名空间
:: // 作用域操作符
这个命名空间中包含外部正常声明和定义的函数和全局变量,如果需要对不同作用域的变量和函数加以区分,就可以添加前缀 ::
int global = 15;
int main()
{
cout << ::global << endl;
return 0;
}
当我们在不同的地方定义相同的命名空间时,命名空间中的内容会自动合并
namespace MJ
{
int age;
}
namespace MJ
{
int id;
}