设为首页 加入收藏

TOP

C++ Primer 学习笔记_92_用于大型程序的工具 --命名空间[续1](二)
2015-07-24 06:55:03 来源: 作者: 【 】 浏览:99
Tags:Primer 学习 笔记 _92_ 用于 大型 程序 工具 命名 空间
ing指示有用的一种情况是:用在命名空间本身的实现文件中



6、using指示例子

namespace blip
{
    int bi = 16,bj = 15,bk = 23;
}
int bj = 0;

void manip()
{
    using namespace blip;

    ++ bi;  //17
    ++ bj;  //Error:ambiguous

    ++ ::bj;    //1
    ++ blip::bj; //16

    int bk = 97;
    ++ bk;  //98
}

manip中的 using提示使 manip能够直接访问blip中的所有名字:使用它们的简化形式,该函数可以引用这些成员的名字。



【警告:避免使用using指示】

using指示注入来自一个命名空间的所有名字,它的使用是靠不住的:只用一个语句,命名空间的所有成员名就突然可见了。虽然这个方法看似简单,但也有它自身的问题。如果应用程序使用许多库,并且用using 指示使得这些库中的名字可见,那么,全局命名空间污染问题就重新出现。

而且,当引入库的新版本的时候,正在工作的程序可能会编译失败。如果新版本引入一个与应用程序正在使用的名字冲突的名字,就会引发这个问题

另一个问题是,由using指示引起的二义性错误只能在使用处检测,这个后来的检测意味着,可能在特定库引入很久之后才引发冲突,如果程序开始使用该库的新部分,就可能引发先前未检测到的冲突。 相对于依赖于using指示,对程序中使用的每个命名空间名字使用 using声明更好,这样做减少注入到命名空间中的名字数目,由using 声明引起的二义性错误在声明点而不是使用点检测,因此更容易发现和修正。

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇xcode下build release版本的.a库 下一篇poj 2251 uva 532

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: