C++(四)之using的作用

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;
} 

运行结果如下:

 

注:在使用有变量变量名相同的命名空间时,一定要注意二义性错误的产生。

发布了82 篇原创文章 · 获赞 2 · 访问量 3995

猜你喜欢

转载自blog.csdn.net/shao15232/article/details/103781359