levi at cold.org
Fri Sep 22 19:52:25 MDT 2006
On Sep 22, 2006, at 7:42 PM, Byron Clark wrote:
> Your understanding of pointers and how they work is just fine. What's
> missing is how cout (specifically ostream::operator<<) is handling
> In most cases 'cout << pointer' will print the pointer address. The
> exception is when pointer is a 'char *' or 'wchar_t *' in any of its
> forms. In those cases, ostream::operator<< is overloaded to place the
> NULL terminated string on the output stream instead of the address
> pointed to by the pointer.
Yes, and this is to deal with C 'strings', which were not deemed
worthy of their own datatype. They are more of a library coding
convention with some limited compiler support, and thus libraries
that deal with the C world of the Single Big Array must make a
special case out of char pointers and arrays.
Backward compatibility with C is probably the biggest source of nasty
surprises in C++, which encourages you to think at a higher level,
and provides nice tools for it, but must ultimately also reduce to
viewing the world as a Single Big Array.
More information about the PLUG