I am using dynamic_cast in my source to cast pointer as some thing like below,
Base *base = here storing the pointer;
Derived *derived = dynamic_cast<Derived*>(base);
In the case of base doesn't have the pointer of the class hierarchy then cast fails and returns NULL. In next lines I am checking NULL. So no issues.
I came across a crash dump, my application crashed due to the dynamic_cast throws exception.
I know dynamic_cast will throw only when used with reference types.
Any idea when the dynamic_cast can throw exception when used with pointer as I used in above source?
Any idea when the dynamic_cast can throw exception when used with pointer as I used in above source?
In a well-defined program, it cannot. The standard does not allow it:
[C++11: 5.2.7/9]:
The value of a failed cast to pointer type is the null pointer value of the required result type. A failed cast to reference type throwsstd::bad_cast
(18.7.2).
However, if you pass dynamic_cast
an invalid pointer, then you invoke undefined behaviour and anything may happen, including some implementation-defined C++ exception, or a runtime crash.