This is the mail archive of the
gdb@sources.redhat.com
mailing list for the GDB project.
Re: gdb, c++ & namespaces
- From: Marcel Lanz <marcel dot lanz at ds9 dot ch>
- To: Michael Elizabeth Chastain <mec dot gnu at mindspring dot com>
- Cc: eliz at elta dot co dot il, gdb at sources dot redhat dot com
- Date: Thu, 15 Jan 2004 15:07:38 +0100
- Subject: Re: gdb, c++ & namespaces
- References: <20040115125112.182744B104@berman.michael-chastain.com>
If I think of a "the type that the pointer says" in C++ this is a
pointer of type A pointing to something which is not of type A; hence
its casted to another type or its a pointer to a derived class.
"the type that the object in memory has" is a pointer of type A that
points to an object of type A.
I would say, that polymorphism is like casting type A to B if you can be
sure that all invariants are valid if you use the object after the cast.
With dynamic_cast<B*>(a); you can cast a polymorphic object in a safe
manner on runtime.
This way, I would say that a "dynamic type" is a polymorphic type.
A "static type" is a non-polymorphic type.
void* in C is a very havy polymorphic type but not safe.
C++'s aim was to avoid the void* and make type casting safe.
So if we discuss about "dynamic type" and "static type" for the
debugger, its perhaps not a good idea to use C++ known names for it,
because "a pointer of type A which points in a unsafe manner to something of type B"
is not in the spirit of C++.
What about "pointer type" and "object type" ?
Marcel
On Thu, Jan 15, 2004 at 07:51:12AM -0500, Michael Elizabeth Chastain wrote:
> eli> The manual doesn't mention "static type" and "dynamic type" in the
> eli> section that describes "set pruint". I think it should, if thi
> eli> terminology is to be widely accepted.
>
> I don't know what the popular usage in the C++ community is.
> I don't want to invent new phrases if there are existing phrases.
>
> I checked "The C++ Programming Language" and it does not have
> any nice phrases to distinguish "the type that the pointer says"
> versus "the type that the object in memory has".
>
> Michael C
--
Marcel Lanz
http://www.ds9.ch/lanz/
marcel.lanz@ds9.ch | marcel.lanz@n-1.ch
GnuPG: F975 C6F7 04C8 642B 6DF4 4DF4 2945 F02A 797E 7DAB