C++:关于使用namespace std和cout的问题

32 浏览
0 Comments

C++:关于使用namespace std和cout的问题

这个问题已经有答案了

为什么使用\"using namespace std;\"被认为是不好的做法?

为什么我需要输入using namespace std;才能使用coutendl? 这些是什么; cout是函数吗?

C语言中有cout吗?我听说它是在C++中实现的,因为C++在许多方面都更好。

admin 更改状态以发布 2023年5月20日
0
0 Comments

不! 你不需要使用using namespace std,并且你不应该使用它。使用完全限定的名称std::coutstd::endl,或者在小范围内使用。 \n

using std::cout;
using std::endl;

\n至于其他问题,std::cout不是一个函数。它是一种绑定到标准输出的全局输出流对象。在C中也没有std::cout

0
0 Comments

cout是在std命名空间中定义的全局对象,而endlstd命名空间中定义的(流操作器)函数。

如果您不采取任何行动将它们的名称导入到全局命名空间中,您将无法使用未限定的标识符coutendl来引用它们。您必须使用完全限定的名称:

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;

0