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