C++如何使用dynamic_cast
本篇内容主要讲解“C++如何使用dynamic_cast”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++如何使用dynamic_cast”吧!
成都创新互联公司服务项目包括岳池网站建设、岳池网站制作、岳池网页制作以及岳池网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,岳池网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到岳池省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
C.148:使用dynamic_cast进行指针类型转换时,将不能发现目标类看作是有效的选项
Reason(原因)
dynamic_cast转换允许检查是否指针指向一个在其继承结构中包含给定类的多态对象。由于转换失败的结果仅仅是返回一个空值,这个结果可以在执行时检查。这个特性允许根据结果选择不同的路径。和C.147不同,那里的失败是错误,而且不应该被用于条件执行。
Example(示例)
下面的例子描述的是Shape_owner的增加函数,它接受构造出来的Shape对象的所有权。对象也会在根据它们的几何属性有序加入views容器。在这个例子中,图形没有从几何属性继承。只有它的子类这么做了。
void add(Shape* const item)
{
// Ownership is always taken
owned_shapes.emplace_back(item);
// Check the Geometric_attributes and add the shape to none/one/some/all of the views
if (auto even = dynamic_cast(item))
{
view_of_evens.emplace_back(even);
}
if (auto trisym = dynamic_cast(item))
{
view_of_trisyms.emplace_back(trisym);
}
}
Notes(注意)
寻找所需类的失败会导致dynamic_cast返回一个空值,而解引用一个空指针会引起无定义的行为。因此应该总是认为dynamic_cast的结果可能为空并进行检查。
Enforcement(实施建议)
(复杂) 如果在dynamic_cast执行之后,没有对结果指针进行空判断,那么对使用这个指针的代码报警。
到此,相信大家对“C++如何使用dynamic_cast”有了更深的了解,不妨来实际操作一番吧!这里是创新互联网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
网站题目:C++如何使用dynamic_cast
地址分享:http://hbruida.cn/article/iehshs.html