简单检查dynamic_cast c ++

L L*_*iet 1 c++ pointers dynamic-cast typecasting-operator

我做了一个dynamic_cast并想检查演员是否成功.

我现在正在做一个基本的空指针检查.它是这样的:

A *temp_ptr = dynamic_cast<A *>(obj_ptr);
if( (temp_ptr) && (temp_ptr->some_function()))
{
      // do something if the function returns true
}
else
{
      // cast failed or function returns false
      // continue with normal execution
}
Run Code Online (Sandbox Code Playgroud)

这样很好还是我需要使用断言?我所关心的只是那个特殊的功能.我还有其他检查吗?

它会通过代码审查吗?

Mic*_*man 6

检查结果是否dynamic_cast保护代码不正确.断言保护程序免受程序员错误编写.

是否应该断言取决于对象是否属于您的目标类型是错误的dynamic_cast.如果进入这个代码,你期望混合的对象,其中一些是非类型的A,然后一个断言将触发合法使用.如果此时的每个对象都是类型的,A并且不属于该类型的对象表示编程错误,那么断言是有意义的,至少在调试版本中是这样.