What requires me to declare “using namespace std;”?

后端 未结 12 2185
抹茶落季
抹茶落季 2020-12-17 10:55

This question may be a duplicate, but I can\'t find a good answer. Short and simple, what requires me to declare

using namespace std;

in C+

12条回答
  •  悲&欢浪女
    2020-12-17 11:17

    Namespaces are a way of wrapping code to avoid confusion and names from conflicting. For example:

    File common1.h:

    namespace intutils
    {
        int addNumbers(int a, int b)
        {
            return a + b;
        }
    }
    

    Usage file:

    #include "common1.h"    
    int main()
    {
        int five = 0;
        five = addNumbers(2, 3); // Will fail to compile since the function is in a different namespace.
        five = intutils::addNumbers(2, 3); // Will compile since you have made explicit which namespace the function is contained within.
    
        using namespace intutils;
        five = addNumbers(2, 3); // Will compile because the previous line tells the compiler that if in doubt it should check the "intutils" namespace.
    }
    

    So, when you write using namespace std all you are doing is telling the compiler that if in doubt it should look in the std namespace for functions, etc., which it can't find definitions for. This is commonly used in example (and production) code simply because it makes typing common functions, etc. like cout is quicker than having to fully qualify each one as std::cout.

提交回复
热议问题