why when I use cout, I must put - using std::cout;
There is no "cout" in standard C++, only an "std::cout". You
write std::cout because that is the name of standard out.
You can use a using declaration, as you describe, but I would
recommend only doing so when you have learnt and understood how
namespaces work.
#include <iostream>
using std::cout;
if i look at iostream, it seem cout is defined in iostream -
If <iostream> happens to resolve to a file you can look at
(usually the case), actually looking at that file doesn't
necessarily tell you anything, really.
__PURE_APPDOMAIN_GLOBAL extern _CRTDATA2 ostream cout;
See what I mean. There's a lot of non-C++ there, used to invoke
who knows what compiler magic.
I also see
_STD_BEGIN
_STD_END
More compiler (or library) magic. Anything that begins with a
two _, or a _ followed by a capital letter, is implementation
magic (although I can make a good guess about this one).
See above. Any symbol beginning with two __ or a _ followed by
a capital letter is implementation magic. (There are actually a
few exceptions: implementation magic, but what exactly is
defined by the standard. __LINE__, __FILE__, __DATE__,
__TIME__, __STDC__ and __cplusplus is the exhaustive list at
present, I think, but the next version of the standard will add
a few more.)