07-C++基础-名称空间

难得的闲暇时光,(●'◡'●)多更一期,明天熄灯睡觉写点别的大笑
2.1.5 名称空间

    如果使用iostream,而不是iostream.h,则应使用下面的名称空间编译指令来使iostream中的定义对程序可用:

    using namespace std;    
    这叫做using 编译指令。最简单的办法是,现在接受这个编译指令,以后再考虑它(例如,到第九章再考虑它)。但这里还是简要地介绍它,以免大家一头雾水。
   名称空间支持是一项C++特性,旨在让您编写大型程序以及将多个厂商现有的代码组合起来的程序时更容易,它还有助于组织程序。一个潜在的问题是,可能使用两个已封装好的产品,而它们都包含一个名为wanda()的函数。这样使用winda()函数时,编译器将不知道指的是哪个版本。名称空间让厂商能够将其产品封装再一个叫做名称空间的单元中,这样就可以用名称空间的名称来指出想使用哪个厂商的产品。因此,Microflop Industries 可以将其定义放到一个名为Microflop的名称空间中。这样,其wanda()函数的全称为Microflop::wanda();同样,Piscine公司的wanda()版本可以表示为Piscine::wanda()。这样,程序就可以使用名称空间来区分不同版本了:
       Microflop::wanda("go dancing?");
       Piscine::wanda("a fish named Desire");
    按照这种方式,类、函数和变量便是C++编译器的标准组件,它们现在都被放置在名称空间std中。仅当头文件没有扩展名h的,情况才是如此。这意味着在iostream中定义的用于输出的cout变量实际上是std::out,而endl实际上是std::endl。因此,可以省略编译指令using,以下述方式进行编码:
    std::cout<<"Come up and C++ me some time.";
    std::cout<<end::endl;    
    然而,多数用户并不喜欢将引入名称空间之前的代码(使用iostream.h和cout)转换为名称空间代码(使用iostream和std::cout),除非它们可以不费力地完成这种转换。于是,using编译指令应运而生。下面的一行代码表面,可以使用std名称空间中定义的名称,而不必使用std::前缀:
      using namespace std;
    这个using 编译指令使得std名称空间中所有名称都可用。是一种偷懒的做法,在大型项目中一个潜在的问题。更好的方法是,只使所需的名称可用,这可以通过使用using声明来实现:
    using std::cout;
    using std::endl;
    using std::cin;
     用这些编译指令替换下述代码后,便可以使用cin和cout,而不必加上std::前缀:
     using namespace std;
     然而,要使用iostream中的其他名称,必须将它们分别加入到using 列表中。本系列首先采用这种偷懒的方法,其原因有两个。首先,对于简单程序而言,采用何种名称空间管理方法无关紧要;其次,本系列的重点是介绍C++的基本方面。本系列后面将采用其他名称空间管理技术。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值