C++using声明与using编译指令

using声明和using编译指令

#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

namespace YuanShen
{
	int HuTao = 100;
}

void func01()
{
	int HuTao = 648;

	//using 声明  注意避免二义性问题
	//写了using声明后  下面这行代码说明以后看到的HuTao是应是用YuanShen下的
	//但是,编译器又有就近原则
    //这个就造成了冲突,计算机不知道使用YuanShen下的HuTao还是就近用最近的HuTao
	//这就是二义性
	//using YuanShen::HuTao;

	cout << HuTao << endl;
}

//using编译指令
namespace YuanShen
{
	int ZhongLi =100;
}
void func02()
{
	int ZhongLi = 648;
	//using编译指令
	using namespace YuanShen; //打开原神这个房间,这里只是打开了房间,但是并没用直接调用
	cout << ZhongLi<< endl;//因此这个里按照就近原则,输入的应该是648.
    // 注:当打开多个房间时,也应该注意二义性。
}


int main(){

	func01();
	func02();
	system("pause");
	return EXIT_SUCCESS;
}

    注意:使用using声明或using编译指令会增加命名冲突的可能性。也就是说,如果有名称空间,并在代码中使用作用域解析运算符,则不会出现二义性。

命名空间使用

        需要记住的关键问题是当引入一个全局的using编译指令时,就为该文件打开了该命名空间,它不会影响任何其他的文件,所以可以在每一个实现文件中调整对命名空间的控制。比如,如果发现某一个实现文件中有太多的using指令而产生的命名冲突,就要对该文件做个简单的改变,通过明确的限定或者using声明来消除名字冲突,这样不需要修改其他的实现文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值