我们在使用c++的时候会像固定格式一样加上一句话那就是 下面这个代码
#include<iostream>
using namespace std;
那么为什么要加上这句话呐这里就要说一个概念叫做命名空间,我们都知道c语言我们定义的变量名称不能 重复,而c++呐为了避免命名重复这个问题呐就引入了一个命名空间列如一下代码。
#include<iostream>
using namespace std;
int n=5;
int main()
{
int n=10;
cout<<n;
return 0;
}
在这里呐很明显打印的结果是5,那么外面的n是全局变量他所在的空间就是全局区域,而main函数里面的就是局部变量在局部区域,从这里我们可以看出来局部区域和全局区域是允许有变量的名字重复的并且如果变量名称重复 的话很明显局部区域的优先级要高于全局区域。
然后再说回这个namespace 命名空间我们可以试试不加这句话,那么不加这句话我们会发现cout啊这些函数都没办法使用了,因为这些函数也是在命名空间中的,而这些,命名空间就像一个瓶子你如果不把瓶盖打开就用不了瓶子内部的东西而using namespace std其实就相当于打开瓶盖。
好的那么我们清楚了两个概念 第一就是不同命名空间中的变量是可以重名的, 第二就是 这些不同命名空间中的变量的使用是有优先级的 第三就是命名空间如果不展开的话其定义的变量和函数是没办法使用的。
如何自定义一个命名空间并且在不展开的前提下使用空间内的变量。
#include<iostream>
using namespace std;
int n=5;
namespace byte{
int a =10;
}
int main()
{
//int n=10;
//cout<<n;
cout<<byte::a;
return 0;
}
那么既然存在优先级那么谁的优先级更高呐 优先级顺序是 局部域>全局域>自定义展开空间域。