6

Why we need both the "header file" and the using namespace tag for the any library function to get executed properly. For example cout will not work unless we use iostream. Also it will not work unless we use "using namespace std". My question is why do we need combination of both using namespace std as well as #include <iostream> for cout to execute successfully?

asked Dec 21, 2014 at 5:21
4
  • 2
    When I started c++, I was wondering this too. Commented Dec 21, 2014 at 5:54
  • 1
    You really don't "need" using namespace std;. In fact, you're better off not using it in most situations. See stackoverflow.com/questions/1452721/…. Commented Dec 21, 2014 at 8:01
  • 1
    what I asked basically was why to use "using namespace std" or in your case " std::cout " when we had already added iostream. I did not ask for which one is better " using namespace std" or the std::cout .Anyways Thanks. Commented Dec 21, 2014 at 8:08
  • And the link tells you the there is no "why". It is a bad idea so you should avoid it. Commented Dec 21, 2014 at 8:10

3 Answers 3

7

Including a library header makes the library feature visible to your program code. Without that, your program has no idea that the library even exists. This is the part that is necessary.

Writing using namespace std simply allows you to write cout rather than the full name which is std::cout. It's a convenience, that's all.

answered Dec 21, 2014 at 5:28
0
4

cout is defined in the std namespace, and you can use it without adding a using namespace like

std::cout << "Hello, World" << std::endl;
answered Dec 21, 2014 at 5:26
2
  • Thanks for the reply. But my question is why do we need it in the first place. Since once we exposed "iostream" then why can't we simply use cout. Why to use std::cout or using namespace std. Commented Dec 21, 2014 at 5:44
  • 4
    Namespaces were added to the language. They allow you to reduce and or eliminate variable name collisions. What if you wrote your own class named string? Or a variable named cin? Commented Dec 21, 2014 at 5:50
3

Thanks for the reply. But my question is why do we need it in the first place.
Since once we exposed "iostream" then why can't we simply use cout.

Why to use std::cout or using namespace std?

When you don't use the std namespace, compiler will try to call cout or cin as if it weren't defined in a namespace. Since it doesn't exist there, compiler tries to call something that doesn't exist! Hence, an error occurs.

Lightness Races in Orbit
387k77 gold badges669 silver badges1.1k bronze badges
answered Dec 21, 2014 at 5:47
1
  • I understood the concept now. Thank You so much! Commented Dec 21, 2014 at 5:53

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

By clicking "Post Your Answer", you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.