using声明 和 using编译指令 比较

0.  using声明使特定的名称可用,using编译指令使整个名称空间的名称可用;
1.  using声明,由被限定的名称和它前面的关键字”suing“组成,如:using Jill::fetch; (Jill名称空间名,fetch 具体名称) 
     using编译指令,由名称空间名和它前面的关键字“using namespace”组成,如:using namespace Jill;
2.  如果函数中定义了一个变量(fetch),则using声明不能再导入相同名字的名称,而using编译指令,可以使用作用域解析运算符,导入相同名字的名称;见下面例子:         

--------------------------------------------------------------------------------------------------------------------------------------

0. using声明

0.1 将名称添加到局部声明区域中:
namespace Jill{
           double bucket (double n){......}
           double fetch;
           struct Hill {.......};
           };
 char fetch;
 int main()
  {
         using Jill::fetch; // 用using声明 “fetch”为 局部声明区域中;
         double fetch; // Error ! already have a local fetch;与using编译指令中的用法做比较<---
         cin>>fetch; // 读入到 Jill ::fetch;
         cin>>::fetch; // 读入到 全局 fetch;
         ......
 }
0.2 将名称添加到全局声明区域中
void other();
namespace Jill{
       double bucket(double n){......}
       double fetch;
       struct Hill{......};
       }
using Jill::fetch; //using将“fetch”名称添加到全局声明区域中;
int main()
{
   cin>>fetch;//OK,读入到Jill::fetch;
   other()
   ......
}
void other()
{
  cout<<fetch;//OK,显示Jill::fetch;
}


1. using编译指令
namespace Jill{                        
      double bucket(double n){......}   
      double fetch;
      struct Hill{......};
      }
 char fetch;  //全局 fetch;
 int main(){
      using namespace Jill; 
      Hill Thrll;
      double water=bucket(2);//use Jill::bucket();
      double fetch; //OK,隐藏Jill::fetch;此处注意与前面的using声明用法做比较<---
      cin>>fetch;  //读入到local fetch ;
      cin>>::fetch; //读入到全局fetch;
      cin>>Jill::fetch;//解析,读入到Jill::fetch;
      ......
 }
 int foom()
{
    Hill top; //error! using编译指令在函数中使用时,使得名称空间中的名称被视为在函数之外的声明,但该文件中的其它函数仍不能使用它们!
    Jill::Hill crest;//ok,使用using声明;
}

注:如同时有名称空间Jill和Jack ,则在代码中使用作用域解析运算符(::),将不会冲突:
       Jill::fetch=3;
       Jack::fetch=5;
       
       然而使用using声明时,
      using Jill::fetch;
      using Jack::fetch;
      fetch=5;  //error,出现二义性;


       





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值