using声明和using指示

using声明(using declaration)

using namespacename::namespacemember;

using声明一次只引入命名空间的一个成员。从效果上看就好像using声明语句为命名空间的成员在当前作用于内创建了一个别名一样。

using指示(using directive)

using namespace namespacename;

using指示令整个命名空间的所有内容变得有效。从效果上看,using指示的命名空间好像是定义在最近的外层作用域中。

 1 namespace blip{
 2     int i = 16, j = 15, k = 23;
 3 }
 4 
 5 int j = 0;
 6 void manip()
 7 {
 8     using namespace blip;
 9     ++i;                            //将blip::i设定为17
10     ++j;                            //错误:全局的j还是blip::j?
11     ++::j;                          //正确:将全局的j设定为1
12     ++blip::j;                      //正确:将blip;:j设定为16
13     int k = 97;                  //局部的k隐藏了blip::k,因为
14                                  //using指示就好像在manip之前的
15                                  //全局作用域定义了内容
16     ++k;                            //这个k是98
17     ++blip::k;                   //局部定义过后就得用原本的方
18                                  //式来操作blip的k,这里k为24
19 }

 

posted @ 2018-10-12 01:33  Lightfall  阅读(697)  评论(0编辑  收藏  举报