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)
这样很好还是我需要使用断言?我所关心的只是那个特殊的功能.我还有其他检查吗?
它会通过代码审查吗?
检查结果是否dynamic_cast
保护代码不正确.断言保护程序免受程序员错误编写.
是否应该断言取决于对象是否属于您的目标类型是错误的dynamic_cast
.如果进入这个代码,你期望混合的对象,其中一些是非类型的A
,然后一个断言将触发合法使用.如果此时的每个对象都是类型的,A
并且不属于该类型的对象表示编程错误,那么断言是有意义的,至少在调试版本中是这样.
归档时间: |
|
查看次数: |
166 次 |
最近记录: |