关于using声明和using指示符

        using声明格式为:using 加限定修饰的名字空间成员(using std::string),using指示符格式为using namespace 名字空间名(using namespace std)。前者保留了该名字空间域,但是将成员名字与一个局部同义词相关联;后者是把该名字空间的所有成员转移到包含该名字空间定义的那个域中,其效果相当于去掉了该名字空间,还有一个重要区别就是如果引起二义性错误,前者在声明点就可以检测到,而后者一定要在该名字空间成员被使用是才能被检测到。
  namespace A
{
    int i,j;
}
int i;

eg1:
void fun()
{
    using a::i;   //相当于在这个局部域中定义int i;,故这个局部域中不能出现类似于int i;的重复定义。全局域中的                           int i;被屏蔽
}

eg2:
void fun()
{
    using namespace A;    //相当于全局域中的那个名字空间A不存在
    i=6;   //error!,二义性,是A::i,还是::i,但是可以通过限定修饰达到目的
    ::i=6;    //right;
    A::i=6;    //right  
    j=6;   //right!A::i  
}
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值