cross-posted from: https://lemmy.ml/post/70930

I am learning C++ and in my book using namespace std is written in every program. I understand that std::cout <<"hello"; can be simply written as cout << "hello"; by using namespace std.

Why?

  • freely
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    3 years ago

    Most things in the various STD libs are namespaced as to not clash with other programs. using namespace imports everything in a namespace into your current namespace, even for things you didn’t include.

    It’s just a shortcut to write less, and is a bad habit taught to beginners. It can cause name collisions for all sorts of things since it imports all of std, not just the headers you include.

    Just don’t use it. If you insist, scope your use of using by putting it inside of functions/methods, and specify specific things to import (i.e. using std::string;).

    • Multivortex Tornado@feddit.de
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      1 year ago

      Correct. While using the namespace saves some time when writing (and some space when printing), it may lead to excess time used debugging later when a name clash happens.

      The last point might not be a concern for small “toy programs” used for educational purposes. It is still bad style and should be avoided, especially for toy programs used for educational purposes, though.

      • freely
        link
        fedilink
        arrow-up
        3
        ·
        3 years ago

        I don’t blame beginners for using it. So many starter guides show using namespace std; without even explaining it or its pitfalls.

        All I can say is to get used to writting std::
        It’s not really that much work, and makes it more obvious where some calls are coming from for any readers of your code.