C++ 为什么在包含<;之后必须编写std::cin;iostream>;?
据我所知,C++ 为什么在包含<;之后必须编写std::cin;iostream>;?,c++,namespaces,C++,Namespaces,据我所知,标题包含输入/输出所需的所有内容。但是为什么我们要在cin之前再次编写std::名称空间,就像std::cin>>var #include <iostream> int main(int argc, char const *argv[]) { int var; std::cin>>var; return 0; } #包括 int main(int argc,char const*argv[]{ int-var; std::cin>>v
标题包含输入/输出所需的所有内容。但是为什么我们要在cin
之前再次编写std::
名称空间,就像std::cin>>var代码>
#include <iostream>
int main(int argc, char const *argv[]) {
int var;
std::cin>>var;
return 0;
}
#包括
int main(int argc,char const*argv[]{
int-var;
std::cin>>var;
返回0;
}
标题定义了命名空间std
内的变量cin
如果希望在不加名称空间前缀的情况下使用它,则可以使用
using namespace std;
包含头文件后,请阅读
作为一种妥协,你可以这样做
using std::cin;
只将std::cin
本身拉入当前范围,而不将其拉入其他范围。因为标准提供的每个机制都由std
名称空间包装。在您的例子中,它是I/O对象cin
您可以跳过每次输入std::
,方法是使用命名空间std放置(坏情况请参见:)或使用std::cin放置,仅使用命名空间的一个类(对象)
但是为什么我们要在cin
之前再次编写std::
名称空间,就像std::cin>>var代码>
这是一种保护。这将保护您
和其他标准包括定义许多(许多)具有真正通用名称的标识符,例如,排序
,交换
,列表
,转换
,等等
如果没有这种保护,所有这些话都必须保留下来,以便执行。你不会想要的。考虑一下,你正在一栋楼里找一个叫约翰的人。找到合适的约翰可能很困难,因为大楼里可能不止一个约翰。如果你知道合适的约翰现在在哪个房间,那就容易多了
同样,C++中的命名空间帮助我们识别所引用的正确工件。将
cin
视为John,将命名空间std
视为大楼中的房间。通过使用std::cin
,我们知道我们指的是在std
命名空间中定义的cin
,而不是其他命名空间。因为对象是在。这就是C++的工作原理。因为<代码> CIN <代码>在<代码> STD< /Code >命名空间中。过去使用了<代码> Turbo C++ >代码吗?不。我在VIM中编写,从终端编译和运行。您不必(查看答案),但认为代码比读取更频繁地读取。当我看到某个东西前面有一个std::
时,我会很高兴,因为我知道找到里面的bug的机会比任何东西都少else@formerlyknownas_463035818非常感谢。我已经在我的回答中修正了它