C++:关于使用namespace std和cout的问题
C++:关于使用namespace std和cout的问题
这个问题已经有答案了:
为什么我需要输入using namespace std;
才能使用cout
和endl
? 这些是什么; cout
是函数吗?
C语言中有cout
吗?我听说它是在C++中实现的,因为C++在许多方面都更好。
admin 更改状态以发布 2023年5月20日
不! 你不需要使用using namespace std
,并且你不应该使用它。使用完全限定的名称std::cout
和std::endl
,或者在小范围内使用。 \n
using std::cout; using std::endl;
\n至于其他问题,std::cout
不是一个函数。它是一种绑定到标准输出的全局输出流对象。在C中也没有std::cout
。
cout
是在std
命名空间中定义的全局对象,而endl
是std
命名空间中定义的(流操作器)函数。
如果您不采取任何行动将它们的名称导入到全局命名空间中,您将无法使用未限定的标识符cout
和endl
来引用它们。您必须使用完全限定的名称:
std::cout << "Hello, World!" << std::endl;
基本上,using namespace std
的作用是将存在于std
命名空间中的所有实体的名称注入到全局命名空间中:
using namespace std; cout << "Hello, Wordl!" << endl;
但是,请记住,在全局命名空间中具有这样的using
指令是一种不好的编程实践,几乎肯定会导致恶意名称冲突。
如果您真的需要使用它(例如,如果您的函数使用许多在std
命名空间中定义的函数,并且编写std::
使代码更难以阅读),则应将其范围限制为单个函数的局部范围:
void my_function_using_a_lot_of_stuff_from_std() { using namespace std; cout << "Hello, Wordl!" << endl; // Other instructions using entities from the std namespace... }
更好的方法,只要这是可行的,是使用以下比较不侵入的使用声明,这样将选择性地导入您指定的名称:
using std::cout; using std::endl; cout << "Hello, Wordl!" << endl;