C ++:有关使用名称空间std和cout的问题

这个问题在这里已经有了答案:

  • 为什么“使用名称空间标准”被认为是不好的做法? 35个答案

  • coutstd命名空间中定义的全局对象, endlstd命名空间中也定义的(流操纵器)函数。

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

    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::coutstd::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

    上一篇: C++: Questions about using namespace std and cout

    下一篇: Is using namespace..like bad?