使用 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
是“标准命名空间”。 cout
、cin
和很多 other functions
都在其中定义。
使用这个的原因:
当您不使用std
命名空间时,编译器将尝试调用cout
或cin
,就好像它们没有在命名空间中定义一样(就像代码中的大多数函数一样)。因为它在那里不存在,所以计算机会尝试调用不存在的东西!因此,发生错误。因此,基本上,如果没有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;的作用[2021最新版]