提问人:kev 提问时间:12/6/2021 最后编辑:Vlad from Moscowkev 更新时间:12/6/2021 访问量:600
“using namespace std;”和“std::cout”可以一起使用吗?
can "using namespace std;" and "std::cout" be used together?
问:
一起使用时不会发生错误。这两者可以一起使用吗?using namespace std;
std::cout
#include <iostream>
using namespace std;
int main() {
std::cout << "Hello world!";
return 0;
}
答:
5赞
Vlad from Moscow
12/6/2021
#1
没有问题。在此声明中
std::cout << "Hello world!";
在命名空间中使用了名称的限定名称查找。cout
std
你也可以写
cout << "Hello world!";
在这种情况下,将使用非限定名称查找,并且由于指令将找到该名称cout
using namespace std;
您还可以包含 using 声明,例如
using std::cout;
请注意,应避免使用 using 指令。这可能是模棱两可的原因。最好使用限定名称。
评论
0赞
Vlad from Moscow
12/6/2021
@Eljay using namespace 是一个 using 指令。所以你的评论不清楚。
1赞
heap underrun
12/6/2021
@Eljay 我认为 Vlad 关于您的评论不清楚的评论是由于您似乎混淆了 using
关键字的不同用法的术语:正如 Cpppreference 上的命名空间文章中所解释的那样,一个称为 using-directive(参见 #5,à la),另一个称为 using-declaration(参见 #6,à la)。因此,正如 Vlad 在他的回答中所说,我们应该避免使用 using 指令,而更喜欢使用 using-declaration。using namespace std;
using std::cout;
0赞
Eljay
12/6/2021
@heapunderrun • 谢谢,这解释了!
0赞
Barmak Shemirani
12/6/2021
#2
目的是防止碰撞。当您键入时,它会关闭该保护。这使您可以使用 , , ...没有解析,但它们可能会与其他命名空间发生冲突。namespace
using namespace std;
cout
string
vector
std::
在一些教程中,您可能会看到:他们把它放在那里,使示例更短,而不必在任何地方输入。但这种用法仅限于简短的示例。对于实际代码,建议不要添加using namespace std;
std::
using namespace std;
您可以随时使用 、 等,而不必担心冲突。std::cout
std::string
std::vector
评论
std::cout
using namespace std;