[英]simple check for dynamic_cast c++
我进行了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
}
这样很好还是我需要使用assert? 我只关心该特定功能。 还有其他我应该使用的支票吗?
它会通过代码审查吗?
对dynamic_cast
结果的检查可防止代码错误地处理。 断言保护程序免受程序员错误编写内容的侵害。
是否应该断言取决于对象是否不是dynamic_cast
的目标类型是错误的。 如果进入此代码,您期望混合使用对象,其中一些是对象,而某些不是A
类型A
,则断言将触发合法使用。 如果此时的每个对象都应为A
类型A
而不是该类型的对象表明存在编程错误,则至少在调试版本中,断言才有意义。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.