使用 namespace::std 是啥意思? [复制]

Posted

技术标签:

【中文标题】使用 namespace::std 是啥意思? [复制]【英文标题】:What does using namespace::std mean? [duplicate]使用 namespace::std 是什么意思? [复制] 【发布时间】:2021-05-06 03:22:50 【问题描述】:

习惯了

using namespace std;

这将使std 中的符号可用,因此我可以输入string mystring 而不是std::string mystring

但是今天在阅读一些代码时,我在头文件中找到了using namespace::std;(带有双冒号)。 它与using namespace std; 有何不同?

我知道 using namespace std; 不应该用于头文件,但是 using namespace::std; 呢?

【问题讨论】:

我是using namespace ::std C++标准规定“所有库实体都定义在命名空间std中。”...所以你所有的标准C++库函数等等...都是通过命名空间暴露的标准。至于using namespace std;的快捷方式,见Why is “using namespace std;” considered bad practice? 【参考方案1】:

好的!让我用完整的解释来消除你的疑问。

首先让我们看一下下面的语法,然后我会描述它并到达使用它的原因:

using namespace std;

这里,关键字using 在技术上意味着,尽可能使用它。

现在让我们了解namespace std 是什么:

std 是“标准”的缩写。 std 是“标准命名空间”。 coutcin 和很多 other functions 都在其中定义。

使用这个的原因:

当您不使用std 命名空间时,编译器将尝试调用coutcin,就好像它们没有在命名空间中定义一样(就像代码中的大多数函数一样)。因为它在那里不存在,所以计算机会尝试调用不存在的东西!因此,发生错误。因此,基本上,如果没有using namespace std;,当您尝试编写cout << value; 时,您必须输入std::cout << value;。通过将此语法添加到您的预处理器中,您无需一次又一次地添加std::,并且还减少了任何语法错误的机会,因为编译器在运行前被指示我们打算使用std命名空间只要有可能。

这里有两个例子供你参考:

// Without 'using namespace std;'
#include <iostream> 
 
int main() 
 
    std::cout << "Hello World\n"; 
    return 0;     

现在,让我们看看using namespace std; 的好处:

// With 'using namespace std;'
#include <iostream> 
 
using namespace std; //now we don't need to write 'std::' anymore. 
 
int main() 
 
    cout << "Hello World"; 
    return 0;     

最后让我纠正你,当我们在预处理器中添加这个时,我们使用syntax

using namespace std;

不是:

using namespace::std;

我希望这个解释对你有所帮助。如果有帮助,请点赞。

谢谢!

【讨论】:

以上是关于使用 namespace::std 是啥意思? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Error:全局变量不明确(using namespace std 与全局变量的冲突)

using namespace std

using namespace std;的注意事项

一文弄清using namespace std;的作用[2021最新版]

#include <iostream> using namespace std; int fn

LLVM是什么以及其编程规范中关于using namespace std的思考