“使用命名空间std”有什么用?

时间:2013-09-20 10:06:45

标签: c++ namespaces std using

using namespace std有什么用?

我想看看Layman的解释。

2 个答案:

答案 0 :(得分:82)

  • 使用:您将使用它。
  • 命名空间:要用什么?命名空间。
  • std std命名空间(声明了C ++标准库的功能,例如stringvector)。

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

如果您编写它,当编译器看到vectorstd::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;
}