This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Turning off C++ casting?
Paolo Bonzini <paolo dot bonzini at polimi dot it> writes:
| > | assert (dynamic_cast<ExtendedObject*>(&baseObj) != NULL);
| > | ExtendedObject& obj = *reinterpret_cast<ExtendedObject*>(&baseObj);
| >
| > Please write the last line as
| >
| > ExtendedObject& obj = *dynamic_cast<ExtendedObject*>(&baseObj);
|
| Why?
Because you don't know what reinterpret_cast<> will do. Do you?
| The point was to avoid the performance impact (assuming there is) of
| dynamic_cast in non-debugging releases.
If you know for sure that the derivation actually holds, then use
static_cast<>, -not- reinterpret_cast<>.
| After the dynamic_cast has been
| checked to be valid, you can use the faster reinterpret_cast safely, can't
| you?
Maybe it is faster (as usual with wrong answers); but safely certainly not.
-- Gaby