《C++游戏编程入门(第4版)》——1.3 使用std名称空间

简介:

本节书摘来自异步社区出版社《C++游戏编程入门(第4版)》一书中的第1章,第1.3节,作者:【美】Michael Dawson(道森),更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.3 使用std名称空间

C++游戏编程入门(第4版)
因为经常要用到std名称空间中的元素,在此介绍两种不同的可以直接使用这些元素的方法,这样就不必总是使用std::前缀。

1.3.1 Game Over 2.0程序简介

Game Over 2.0程序的运行结果和图1.2所示的原始Game Over程序一模一样,但是区别在于访问std名称空间中元素的方式。从Cengage Learning网站(www.cengageptr.com/downloads上可以下载到该程序的代码。程序位于Chapter 1文件夹中,文件名为game_over2.cpp。

// Game Over 2.0
// Demonstrates a using directive
#include <iostream>
using namespace std;
int main()
{
   cout << "Game Over!" << endl;
   return 0;
}```
###1.3.2 使用using指令
与Game Over程序一样,Game Over 2.0也以两行注释和用于输出的iostream头文件开始。但是接下来,我们看到了一行新的语句:
`
using namespace std;`
using指令让我们直接获取std名称空间中元素的访问权。如果还是将名称空间比作区号,那么从上面语句开始,所有std名称空间中的元素就如同本地电话号码一样。也就是说,无须加上区号(std::前缀)就可以访问它们。

现在我们可以不加任何前缀就使用cout和endl。就目前而言,这似乎无足轻重。但如果要几十甚至上百次地引用这些对象,这就非常有用了。

###1.3.3 Game Over 3.0程序简介
还有另外一种实现Game Over 2.0的方法:将文件配置成不必每次显式地使用std::前缀就可以访问cout和endl。这正是将要在Game Over 3.0程序中展示的方法,Game Over 3.0显示的文本和Game Over 2.0一模一样。从Cengage Learning网站(www.cengageptr.com/downloads)可以下载到该程序的代码。程序位于Chapter 1文件夹中,文件名为game_over3.cpp。

// Game Over 3.0
// Demonstrates using declarations

include

using std::cout;
using std::endl;
int main()
{
   cout << "Game Over!" << endl;
   return 0;
}`

1.3.4 使用using声明

3.0版本的Game Over程序使用了两个using声明。

using std::cout;
using std::endl;```
通过明确声明希望std名称空间中的哪些元素对程序本地化,可以像程序Game Over 2.0一样直接访问它们。虽然这样做与使用using指令比起来输入量要更多一些,但优势在于清晰地指明了计划使用的名称空间中的元素。另外,这不会将无意使用的元素本地化。

###1.3.5 使用using的时机
以上介绍了两种使名称空间中的元素本地化的方法。但是哪种方法更好呢?

语言纯粹主义者会说两种方法都不可取,而应该在每次使用这些元素的时候加上前缀作为区别。在我看来,这就如同总是使用全名来称呼您最好的朋友,显得过于正式。

如果您讨厌输入太多字符,可以使用using指令。较为折中的方案是使用using声明。为了简洁起见,本书大多数时候使用using指令。

现实世界

目前已经介绍了几种使用名称空间的方法。同时,也说明了这些方法各自的优势,以便您在自己的程序中决定选择哪种方法。然而,我们也许无法最终使用自己喜欢的方法。在完成某一项目时,不管它是小到课堂级别还是大到专业级别,您都会受到项目负责人制定的编程规范的限制。不管它是否符合您的个人习惯,最好都服从那些给您打分或者支付薪水的人。
本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。
相关文章
|
29天前
|
存储 C++ 容器
C++入门指南:string类文档详细解析(非常经典,建议收藏)
C++入门指南:string类文档详细解析(非常经典,建议收藏)
38 0
|
29天前
|
编译器 C++
C++入门指南:10分钟带你快速了解模板究竟是什么(建议收藏!!)
C++入门指南:10分钟带你快速了解模板究竟是什么(建议收藏!!)
32 0
|
29天前
|
存储 编译器 C语言
C++入门: 类和对象笔记总结(上)
C++入门: 类和对象笔记总结(上)
34 0
|
1月前
|
编译器 Linux C语言
C++第二弹---C++入门(中)
C++第二弹---C++入门(中)
|
30天前
|
Java 程序员 Maven
【C/C++ CommonAPI入门篇】深入浅出:CommonAPI C++ D-Bus Tools 完全使用教程指南
【C/C++ CommonAPI入门篇】深入浅出:CommonAPI C++ D-Bus Tools 完全使用教程指南
58 0
|
1月前
|
存储 安全 编译器
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
【C++ 17 新功能 std::visit 】深入解析 C++17 中的 std::visit:从原理到实践
70 0
|
2天前
|
设计模式 存储 Java
C++从入门到精通:3.5设计模式——提升代码可维护性与可扩展性的关键
C++从入门到精通:3.5设计模式——提升代码可维护性与可扩展性的关键
|
2天前
|
存储 C++
C++从入门到精通:1.1.4基础语法之控制流
C++从入门到精通:1.1.4基础语法之控制流
|
2天前
|
存储 编译器 C++
C++从入门到精通:1.1.2基础语法之数据类型
C++从入门到精通:1.1.2基础语法之数据类型
|
4天前
|
C语言 C++
c++的学习之路:4、入门(3)
c++的学习之路:4、入门(3)
18 0