Geeks With Blogs
Robert Bernstein's Blog Adventures in Windows, .NET, and C++

I often get confused about the different types of C++ casts:

  • dynamic_cast can be used for "upcasting" or "downcasting"
    • Upcasting:    A* pA = dynamic_cast<A*>(pB)  when B inherits from A
    • Downcasting:  B* pB = dynamic_cast<B*>(pA)  when B inherits from A
  • static_cast
    • static_cast conversions are not as safe as dynamic_cast conversions, because static_cast does no run-time type check, while dynamic_cast does.
    • A dynamic_cast to an ambiguous pointer will fail, while a static_cast returns as if nothing were wrong; this can be dangerous.
    • Although dynamic_cast conversions are safer, dynamic_cast only works on pointers or references, and the run-time type check is an overhead. (
  • reinterpret_cast
Posted on Wednesday, October 6, 2010 3:41 PM C++ | Back to top

Comments on this post: C++ Casting Operators

No comments posted yet.
Your comment:
 (will show your gravatar)

Copyright © Rob | Powered by: