gpt4 book ai didi

c++ - 简单检查 dynamic_cast c++

转载 作者:行者123 更新时间:2023-11-30 00:50:44 26 4
gpt4 key购买 nike

我做了一个 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 类型,而不是该类型的对象表示编程错误,则断言是有意义的,至少在调试版本中是这样。

关于c++ - 简单检查 dynamic_cast c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24021406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com