什么是“使用命名空间标准”的使用?

什么是using namespace stdusing namespace std

我想在外行看到解释。

  • 使用 :你将要使用它
  • 命名空间 :使用什么? 一个命名空间
  • stdstd命名空间(声明了C ++标准库的特性,如stringvector )。

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

如果你写它,当编译器看到stringvector它不会知道你在引用什么。 你将需要明确地告诉它std::stringstd::vector ,如果你不这样做,你会得到一个编译错误。

当你using namespace <some_namespace>;进行调用时using namespace <some_namespace>; 该名称空间中的所有符号将变为可见而不添加名称空间前缀。 符号可以是例如函数,类或variables。

例如,如果你添加using namespace std; 当调用命名空间std定义的operator cout时,您可以只写cout而不是std::cout

这样做有点危险,因为命名空间是用来避免名称冲突的,而且通过using namespace来编写代码,但却忽略了这个优点。 一个更好的select是只使用特定的符号,从而使它们没有命名空间前缀可见。 例如:

 #include <iostream> using std::cout; int main() { cout << "Hello world!"; return 0; }