|
|
Warp wrote:
> There are a few cases where a global instance may be more practical than
> harmful.
Yeah. Kind of like "goto". :-)
> In C++ in particular, though, I still prefer putting those inside
> a namespace.
Certainly if you can give it a name that groups it appropriately, that's
an improvement. I just call anything whose lifetime and scope are both
"the entire execution of the program" a global, regardless of how the
name is qualified. I don't think putting it inside a namespace prevents
too many of the traditional problems associated with globals.
> As I mentioned, I think std::cout is a good example.
Exactly. It means one thing, and it means that thing throughout the
entire lifetime of the program. Unlike, say, "errno", whose semantics
are poor due to not meaning anything obvious if the immediately
preceding system call didn't fail - i.e., there are far too many caveats
on when errno is "valid" for it to count as a good use of globals. It's
more a kludge due to C not being able to return multiple values.
Of course, throw in threads and everything gets more confusing. :-)
--
Darren New / San Diego, CA, USA (PST)
"That's pretty. Where's that?"
"It's the Age of Channelwood."
"We should go there on vacation some time."
Post a reply to this message
|
|