Wednesday 3 January 2018

c++ - Using namespace std vs other alternatives

itemprop="text">




using namespace
std;


So far in my
computer science courses, this is all we have been told to do. Not only that, but it's
all that we have been allowed to do, otherwise we get penalized on our code. I
understand, through looking at code posted online, that you can use ::std or std:: to
accomplish the same thing.




My
question is generall why? Obviously for the sake of learners and simplicity using the
global declaration is simpler, but what are the draw backs? Is it more realistic to
expect ::std in a real world application? And I guess to add on to this, what is the
logic/concept behind the using declaration? None of this has been explained during my
courses, and I'd like to get a better grasp on
it.



As a general question: if I haven't been
taught this content, vectors, templates, classes, or error handling does it seem like
I'm missing a lot of essential C++
functionality?



Thanks in
advance!



Answer




This is really one of those things that you
can discuss over beer for hours and hours, and still not have an answer everyone is
happy with.



If you are nearly always using
std:: functionality, then adding using namespace
std;
at the beginning of the file is not that bad an idea. On the other
hand, if you are using things from more than one namespace (e.g. writing a compiler
using llvm:: and also using std::, it
may get confusing as to which parts are part of llvm and which
parts are std:: - so in my compilter project, I don't have a
single file with using namespace ...; - instead I write out
llvm:: and std:: as needed. There are
several functions (unwisely, perhaps) called Type(), and some
places use something->Type()->Type() to get the
type-thing that I need... Yes, it confuses even me a little at times...




I also have many things that look
like Constants::ConstDecl and
Token::RightParen, so that I can quickly see "what is what".
All of these COULD be made shorter and "simpler", but I prefer to see where things
belong most of the time.



Being more verbose
helps making it easier to see where things belong - but it makes for more typing and
more reading, so it is a balance.


No comments:

Post a Comment

php - file_get_contents shows unexpected output while reading a file

I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print &q...