Re: Usage of C++ NULL vs 0
Matthias Buelow wrote:
James Kanze wrote:
But you can't check whether a pointer is valid; you just have to
know.
Yes.. what I mean is that in the language context, where a non-null
pointer is used to indicate an "valid" pointer:
if (p) vs. if (NULL != p).
That's one of the cases to test for.
I find the first form more meaningful and it hides the detail that
the pointer has the value NULL, a technicality which I'm not really
interested in here.
(I agree that it would be nice if pointers had an
isValid() member function, but they don't.)
if (p) vs. if (p.isValid()) ?
I think I prefer the first.
But it doesn't answer the question that the second one would (if it
was available):
T* p = new T();
delete p;
if (p.isValid())
{
// p still points to a valid object
}
Well, it does require you do know what you're doing. I'd hardly
call that a disadvantage, however.
IMHO the disadvantage is that one can easily get bogged down in a
level of detail that distracts from the problem I actually want to
solve. Maybe it's just me but a significant time of my C++
programming is spent fighting the compiler. However, YMMV. Maybe my
mental model just doesn't map well onto C++. Curiously, I don't
really have these problems with C, though, although it is a more
primitive language (but it is honest, and doesn't pretend to be
high-level.)
Having just a small hammer and a screwdriver makes it simpler to
master one's tools. A skilled craftsman ("knowing what he is doing"),
can be much more productive with a nail gun or a chain saw.
Bo Persson