using的使用

using声明

形式:

using mysapce::myname;  //表示声明namespace空间的name成员

作用域:从using声明地方开始,一直到using声明所在的作用域结束为止,在此过程中外层作用域的同名实体将被隐藏。

using指示

形式:

using namespace myname;  

作用域规则与声明相同

对比

  • using指示无法控制哪些名字是可见的,因为命名空间所有名字都是可见的。
  • using声明可以出现在全局作用域、局部作用域、命名空间作用域以及类作用域;using指示只能不能出现在类作用域。
  • using指示具有将命名空间成员提升到包含命名空间本身和using指示最近作用域的能力。
//命名空间A和函数f定义在全局作用域中
namespace A
{
    int i,j;
}
void f()
{
    using namespace A;  //把A中的名字注入到全局作用域中
    cout<<i*j<<endl;  //使用命名空间A中的i和j
    //...
}   

总结

在头文件顶层作用域中应避免含有using指示或using声明,则会将名字注入所有包含该头文件的文件中。而通常情况下头文件只负责定义接口部分的名字,而不定义实现部分的名字。因此头文件最只能在它的函数或命名空间内使用using指示和using声明。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值