using namespace std
有什么用?
我想看看Layman的解释。
答案 0 :(得分:82)
std
命名空间(声明了C ++标准库的功能,例如string
或vector
)。在您编写此指令后,如果编译器看到string
,则会知道您可能指的是std::string
,如果它看到vector
,则会知道您可能是std::vector
提到string
。 (前提是您已在编译单元中包含了定义它们的头文件。)
如果您不编写它,当编译器看到vector
或std::string
时,它将不知道您所指的是什么。您需要明确告诉它std::vector
或{{1}},如果不这样做,您将收到编译错误。
答案 1 :(得分:28)
当您调用using namespace <some_namespace>;
时,该名称空间中的所有符号都将变为可见而不添加名称空间前缀。符号可以是例如函数,类或变量。
E.g。如果添加using namespace std;
,则在调用命名空间cout
中定义的运算符std::cout
时,您只能编写cout
而不是std
。
这有点危险,因为命名空间旨在用于避免名称冲突,并且通过编写using namespace
来节省一些代码,但是放弃了这个优势。更好的选择是仅使用特定符号,从而使它们在没有名称空间前缀的情况下可见。例如:
#include <iostream>
using std::cout;
int main() {
cout << "Hello world!";
return 0;
}