在C ++中“使用命名空间标准”是什么意思?
考虑一种情况,当我们在同一个班级中有两个名字相同的人,Piyush。每当我们绝对需要区分他们时,我们都必须使用一些其他信息以及他们的名字,例如该地区(如果他们居住在另一个地区)或他们的母亲或父亲的名字等。
您的C++应用程序中可能会出现相同的情况。例如,您可能正在编写一些具有称为函数的代码,xyz()
并且还有另一个库也具有相同的功能xyz()
。现在,编译器无法知道xyz()
您在代码中引用的是哪个版本的函数。
设计命名空间是为了克服这一困难,它被用作附加信息来区分具有不同库中可用的相同名称的相似函数,类,变量等。使用命名空间,可以定义定义名称的上下文。本质上,命名空间定义范围。
C++有一个标准库,其中包含用于构建应用程序(例如容器,算法等)的常用功能。如果它们使用的名称是公开的,例如,如果它们全局定义了队列类,则您将永远无法在没有冲突的情况下再次使用相同的名称。因此,他们创建了一个命名空间std来包含此更改。
using命名空间语句只是意味着在它存在的范围内,使std命名空间下的所有内容都可用,而不必在每一个之前都加上std::前缀。
尽管这种做法对于简短的示例代码或琐碎的程序来说是可以的,但将整个std命名空间引入全局命名空间并不是一个好习惯,因为它违反了命名空间的目的,并且可能导致名称冲突。(即使最初没有名称冲突,在项目中添加更多代码,库等时,它们也可能在维护期间出现。)这种情况通常称为命名空间污染。