C++ 中的 'using namespace std' 是什么意思?
考虑这样一种情况,在一个班级里有两个名字相同的人,都叫 Piyush。当我们需要区分他们时,肯定需要使用一些额外的信息,比如他们居住的区域(如果他们住在不同的区域),或者他们母亲或父亲的名字等等。
同样的情况也可能出现在你的 C++ 应用程序中。例如,你可能正在编写一些代码,其中包含一个名为 xyz() 的函数,并且还有一个可用的库也包含相同函数 xyz()。现在,编译器无法知道你的代码中指的是哪个版本的 xyz() 函数。
命名空间旨在克服这种困难,并用作额外的信息来区分在不同库中可用的名称相同的功能、类、变量等。使用命名空间,你可以定义名称定义的上下文。从本质上讲,命名空间定义了一个作用域。
C++ 拥有一个标准库,其中包含你在构建应用程序时使用的常见功能,例如容器、算法等。如果这些库使用的名称是公开的,例如,如果它们在全局范围内定义了一个队列类,那么你将无法再次使用相同的名称而不会发生冲突。因此,他们创建了一个命名空间 std 来包含此更改。
using namespace 语句的意思是在它存在的作用域中,使 std 命名空间下的所有内容都可用,而无需在每个内容之前都加上 std:: 前缀。
虽然这种做法对于简短的示例代码或简单的程序来说是可以的,但将整个 std 命名空间引入全局命名空间并不是一个好习惯,因为它违背了命名空间的目的,并可能导致名称冲突。(即使最初没有名称冲突,随着更多代码、库等添加到项目中,在维护过程中也可能会出现名称冲突。)这种情况通常称为命名空间污染。
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP