在本章之前看到的程序,都是通过直接说明名字来自 std 命名空间,来引用标准库中的名字。例如,需要从标准输入读取数据时,就用 std::cin。这些名字都用了:: 操作符,该操作符是作用域操作符(第 1.2.2 节)。它的含义是右操作数的名字可以在左操作数的作用域中找到。因此,std::cin 的意思是说所需要名字 cin 是在命名空间 std 中定义的。显然,通过这种符号引用标准库名字的方式是非常麻烦的。幸运的是,C++ 提供了更简洁的方式来使用命名空间成员。本节将介绍一种最安全的机制:using 声明。关于其他简化使用命名空间中名字的方法将在第 17.2 节中介绍使用 using 声明可以在不需要加前缀 namespace_name:: 的情况下访问命名空间中的名字。using 声明的形式如下: using namespace::name; 一旦使用了 using 声明,我们就可以直接引用名字,而不需要再引用该名字的命名空间。
没有 using 声明,而直接使用命名空间中名字的未限定版本是错误的,尽管有些编译器也许无法检测出这种错误。每个名字都需要一个 using 声明一个 using 声明一次只能作用于一个命名空间成员。using 声明可用来明确指定在程序中用到的命名空间中的名字,如果希望使用 std(或其他的命名空间)中的几个名字,则必须为要用到的每个名字都提供一个 using 声明。例如,利用 using 声明可以这样重新编写第 1.2.2 节中的加法程序:
对 cin,cout 和 endl 进行 using 声明,就意味着以后可以省前缀 std::,直接使用命名空间中的名字,这样代码可以更易读。从这里开始,假定本书所有例子中所用到的标准库中的名字都已提供了 using 声明。这样,无论是在文档还是在代码实例中引用 cin, 我们都不再写为前缀形式 std::cin,为了使代码实例简短,我们还省略了编译时所必需的 using 声明。同样的,程序实例也会省略必需的 #include 指示。本书附录 A 中的表 A.1 列出了本书中用到的标准为名字的库名和相应的头文件。在编译我们提供的实例程序前,读者一定要注意在程序中添加适当的 #include 和 using 声明。使用标准库类型的类定义有一种情况下,必须总是使用完全限定的标准库名字:在头文件中。理由是头文件的内容会被预处理器复制到程序中。用 #include 包含文件时,相当于头文件中的文本将成为我们编写的文件的一部分。如果在头文件中放置 using 声明,就相当于在包含该头文件 using 的每个程序中都放置了同一 using,不论该程序是否需要 using 声明。通常,头文件中应该只定义确实必要的东西。请养成这个好习惯。
分享到:
相关推荐
C++Primer 第四版课后习题解答(第1~18章完整答案)完整版 非扫描高清
C++ Primer第四版习题(完整版) C++ Primer第四版习题(完整版)
3.1 命名空间的using声明 68 3.2 标准库string类型 70 3.2.1 string对象的定义和初始化 70 3.2.2 String对象的读写 71 3.2.3 string对象的操作 72 3.2.4 string对象中字符的处理 76 3.3 标准库vector类型 78 3.3.1 ...
国外经典C++教材C++ Primer中文第四版配套实例 代码
c++primer第四版练习答案完整版。
C++Primer第五版习题答案+详解(完整版) C++Primer第五版习题答案+详解(完整版)
C++Primer(第4版)_课后习题答案
c++ primer第四版示例源代码,官网下载,学C++的都知道!!!
c++ primer 第四版 中英对照 源代码 勘误 我自己多年收集整理的资料
C++ Primer第五版 高清扫描pdf,压缩版,下载后解压即可
锻炼自己的全英文C++ primer第五版电子版,更加适合于有一定代码功底人士阅读,初学者(你要读也很棒棒)阅读难度较大。
C++ Primer 第五版(中文版) 第1~11章课后习题答案(附上代码)
c++ Primer第五版中文版,带书签,内容清晰容易阅读。
c++primer第五版中文版课后答案(第12章)pdf格式,真正的c++primer习题集(第五版),用手机拍的,但是每个字都能看的很清楚
C++ Primer第四版中的Sales_item.h
c++primer 中文版第四版书本源代码
C++ Primer第四版习题答案(1~16章)非扫描
C++ Primer 第四版 答案 完整 中文版
C++Primer中文版第5版
C++Primer第四版课后答案2,7,10章,全部为可运行程序。