“使用命名空间std”有什么用? [重复]

问题描述 投票:57回答:2

这个问题在这里已有答案:

using namespace std有什么用?

我想看看Layman的解释。

c++ namespaces std using
2个回答
83
投票
  • 使用:你将使用它。
  • 命名空间:要用什么?命名空间。
  • std:std名称空间(声明了C ++标准库的功能,例如stringvector)。

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

如果你不写它,当编译器看到stringvector时,它将不知道你所指的是什么。您将需要明确告诉它std::stringstd::vector,如果不这样做,您将收到编译错误。


28
投票

当您调用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;
}
© www.soinside.com 2019 - 2024. All rights reserved.