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
这样的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;
没有! 你不需要using namespace std
,你不应该使用它。 使用完全限定名std::cout
和std::endl
,或者在一个小范围内,
using std::cout;
using std::endl;
至于其他问题, std::cout
不是一个函数。 它是一种绑定到标准输出的全局输出流对象。 C中没有std::cout
using namespace std;
将名称集合中的名称(称为名称空间)带入当前范围。 大多数教科书似乎鼓励使用如下:
#include <iostream>
using namespace std;
int main()
{
//Code which uses cout, cin, cerr, endl etc.
}
有些人不鼓励以这种方式使用它,因为当名称空间作用域重叠时,可能会与名称发生意外的冲突,并鼓励您直接使用完全限定名,如std :: endl
您还有其他选项,如
a)利用范围规则临时引入命名空间
int main()
{
{
using namespace std;
//Code which uses things from std
}
//Code which might collide with the std namespace
}
b)或只带进你需要的东西
using std::endl;
using std::cin;
在回答最后一个问题时,cin是一个流对象(一组支持流提取和插入操作符>>和<<的函数和数据的集合)
链接地址: http://www.djcxy.com/p/29781.html