关于“使用命名空间标准”的问题?

1 c++

最近我注意到,如果我不在程序中包含“ using namespace std”,而仅使用“ std :: cout”或“ std :: endl”,那么我的程序仍然可以编译吗?因此,如果我使用'std ::'前缀,是否甚至需要包括'using namespace std'?“ std ::”前缀是否调​​用using名称空间std?如果有人可以帮我解决这个问题,将不胜感激。

Dan*_*l H 5

在C ++中,::称为“范围解析运算符”,因此std::cout表示“ cout可以在内部找到的变量std”。

using namespace std;指令的意思是“对于您找不到的任何名称,也可以尝试在中查找它std”。因此,如果您明确地说出std::cout(并等效于std命名空间中的所有其他内容),则不需要using namespace std


正如其他人所说的那样,使用它通常被认为是不好的样式using namespace std;,因为例如其中的许多名称std都是您可能想在其他地方使用的名称std::count。一个折中的选择是不是说using std::cout;,这将告诉编译器寻找coutstd,但不是别的。

关于是否在主要C ++文件中说using std::cout或仅std::cout在需要的地方编写代码存在争论,但是大多数人认为,即使使用,也应该很少使用using namespace。但是,如果要编写头文件,则永远不要using在顶层使用指令,因为每个包含您文件的文件都可以使用它,并且他们可能想使用不同的名称。