最近我注意到,如果我在程序中不包括“ using namespace std”,而仅使用“ std :: cout”或“ std :: endl”,那么我的程序仍然可以编译吗?因此,如果我使用'std ::'前缀,是否甚至需要包括'using namespace std'? “ std ::”前缀是否调用using名称空间std?如果有人可以帮我解决这个问题,将不胜感激。
答案 0 :(得分: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;
,这将告诉编译器在cout
中寻找std
,而不要寻找其他任何东西。
关于在主要C ++文件中需要的任何地方说using std::cout
还是只写std::cout
一直存在争议,但是大多数人认为您很少使用using namespace
。但是,如果要编写头文件,则应该从不在顶层使用using
指令,因为包含您的文件的每个文件都将得到它,他们可能想使用其他名称。
答案 1 :(得分:0)
使用时:
using namespace std;
你告诉程序它找不到的任何东西都应该在命名空间 std 中。对于较大的程序,这是一个问题,因为您可能使用具有相同名称的函数的多个命名空间,因此对于较大的程序最好使用 std::cout
。