C++中我们写程序一般会先写这么两句
#include <iostream>
using namespace std;
那么这个using是什么意思?它的作用是什么?
今天我们主要讲解这个using的用法。
using的作用有两个:
1、声明作用。
2、编译作用。
声明命名空间的方式是: using namespcae xxx; //使用xxx的命名空间
声明使用某个命名空间里面的某个变量: using xxx::yy; //使用xxx命名空间内部的yy变量。
编译的作用是:
using namespace xxx; //放在函数或调用处,此时不在全局变量的位置。说明后面的text段要使用xxx这个命名空间了。
下面我们上代码举例说明:
#include <iostream>
using namespace std;
namespace KingGlory{
int sunwukongId = 10;
}
//using 声明
void test01(void)
{
int sunwukongId = 20;
//using 声明
//using KingGlory::sunwukongId;
//注当我这里使用了namespace KingGlory后,
//下面在打印的时候,产生了歧义性。造成错误
cout << "sunwukongId = " << sunwukongId << endl;
}
//using 编译指令
void test02(void)
{
int sunwukongId = 21;
//打开KingGlory的命名空间
using namespace KingGlory;
//这里再输出sunwukongId的时候,输出的仍然是21.
//因为我们虽然打开了namespace KingGlory,但是
//在输出的时候,并没有使用这个命名空间。
//所以打印出来的值仍然是就近原则
cout << "sunwukongId = " << sunwukongId << endl;
}
namespace LOL{
int sunwukongId = 30;
}
//using 编译指令
void test03(void)
{
using namespace KingGlory; //打开王者荣耀的房间
using namespace LOL; //打开LOL的房间
//这个时候调用sunwukongId的时候需要指定
//使用的是哪个命名空间下的变量
//否则会报找不到变量
cout << KingGlory::sunwukongId << endl;
cout << LOL::sunwukongId << endl;
}
int main(void)
{
test01();
test02();
test03();
return 0;
}
运行结果如下:
注:在使用有变量变量名相同的命名空间时,一定要注意二义性错误的产生。