60

有什么用using namespace std

我想用外行术语来解释。

4

2 回答 2

87
  • using:您将使用它。
  • 命名空间:使用什么?一个命名空间。
  • stdstd命名空间(声明 C++ 标准库的功能,例如stringorvector的地方)。

写完这条指令后,编译器看到string它就知道你可能指的是std::string,如果它看到vector了 ,它就会知道你可能指的是std::vector。(当然,前提是您在编译单元中包含了定义它们的头文件。)

如果你写它,当编译器看到string或者vector它不会知道你指的是什么。你需要明确地告诉它std::stringor std::vector,如果你不这样做,你会得到一个编译错误。

于 2013-09-20T10:43:51.157 回答
30

当您调用该命名空间中的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;
}
于 2013-09-20T10:17:00.637 回答