【发布时间】:2013-09-25 16:25:48
【问题描述】:
using namespace std 有什么用?
我希望看到通俗易懂的解释。
【问题讨论】:
-
通俗地说,不要那样做。 Here be dragons.
标签: c++ namespaces std using
using namespace std 有什么用?
我希望看到通俗易懂的解释。
【问题讨论】:
标签: c++ namespaces std using
std 命名空间(其中声明了 C++ 标准库的功能,例如 string 或 vector)。在你写完这条指令后,如果编译器看到string,它就会知道你可能指的是std::string,如果它看到vector,它就会知道你可能指的是std::vector。 (当然,前提是您在编译单元中包含了定义它们的头文件。)
如果您不编写它,当编译器看到string 或vector 时,它不会知道您指的是什么。您需要明确告诉它std::string 或std::vector,否则会出现编译错误。
【讨论】:
当您调用using namespace <some_namespace>; 时,该命名空间中的所有符号都将变为可见,而无需添加命名空间前缀。例如,符号可以是函数、类或变量。
例如如果添加using namespace std;,则在调用命名空间std 中定义的运算符cout 时,可以只写cout 而不是std::cout。
这有点危险,因为命名空间是用来避免名称冲突的,通过编写using namespace 可以节省一些代码,但会失去这个优势。一个更好的选择是只使用特定的符号,从而使它们在没有命名空间前缀的情况下可见。例如:
#include <iostream>
using std::cout;
int main() {
cout << "Hello world!";
return 0;
}
【讨论】:
std 加载所有内容。怎么做?仅限using std::?
using namespace std,就像我在我的回答中写的那样。但是,您应该意识到后果,并且只有在确实需要时才应该使用它