有什么用using namespace std
?
我想用外行术语来解释。
std
命名空间(声明 C++ 标准库的功能,例如string
orvector
的地方)。写完这条指令后,编译器看到string
它就知道你可能指的是std::string
,如果它看到vector
了 ,它就会知道你可能指的是std::vector
。(当然,前提是您在编译单元中包含了定义它们的头文件。)
如果你不写它,当编译器看到string
或者vector
它不会知道你指的是什么。你需要明确地告诉它std::string
or 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;
}