在C++中,dynamic_cast是一种用于在类的继承体系中进行安全向下转型

embedded/2025/1/8 19:02:44/

在C++中,dynamic_cast是一种用于在类的继承体系中进行安全向下转型(即将基类指针或引用转换为派生类指针或引用)的操作符。它主要用于多态环境中,以确保类型转换是有效的。如果转换无效,dynamic_cast将返回nullptr(对于指针)或抛出std::bad_cast异常(对于引用)。

以下是使用dynamic_cast将父类指针或引用转换为子类指针或引用的基本示例:

示例代码

【cpp】
#include
#include
#include

class Base {
public:
virtual ~Base() {} // 必须有虚析构函数,以便支持多态
};

class Derived : public Base {
public:
void derivedFunction() {
std::cout << “Derived function called” << std::endl;
}
};

void checkDynamicCast(Base* basePtr) {
// 尝试将Base转换为Derived
Derived* derivedPtr = dynamic_cast<Derived*>(basePtr);

if (derivedPtr) {// 转换成功,调用派生类的函数derivedPtr->derivedFunction();
} else {// 转换失败,basePtr不是Derived类的实例std::cout <

http://www.ppmy.cn/embedded/151642.html

相关文章

Oracle Dataguard(主库为 Oracle 11g 单节点)配置详解(2):配置主数据库

Oracle Dataguard&#xff08;主库为 Oracle 11g 单节点&#xff09;配置详解&#xff08;2&#xff09;&#xff1a;配置主数据库 目录 Oracle Dataguard&#xff08;主库为 Oracle 11g 单节点&#xff09;配置详解&#xff08;2&#xff09;&#xff1a;配置主数据库一、配置…

音视频-----RTSP协议 音视频编解码

流媒体协议详解&#xff1a;RTSP、RTP、RTCP、SIP、SDP、RTMP、WebRTC、WebSocket-CSDN博客 上文讲解比较清楚 多媒体编解码基础知识 一文详解WebRTC、RTSP、RTMP、SRT-腾讯云开发者社区-腾讯云 RTP :(Real-time Transport Protocol)是用于Internet上针对多媒体数据流的一种传…

DES密码的安全性分析(简化版本)

DES仍是世界上使用最广的&#xff08;DES发行后20年&#xff0c;互联网的兴起&#xff0c;人们开始觉得DES不安全了&#xff0c;但DES的实现成本也越来越低&#xff09; 宏观分析&#xff1a; 密钥空间方面&#xff1a; 密钥长度&#xff1a;DES 算法使用 56 位的密钥对数据…

【每日学点鸿蒙知识】WebView代理、2D绘制矩形圆角、TextInput清理按钮、pdf滑动、icon配置问题

1、HarmonyOS Webview 支持设置代理功能吗&#xff1f; 使用Web的onInterceptRequest先拦截再代理来实现。具体可以参考文档&#xff1a;https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V5/ts-basic-components-web-V5#ZH-CN_TOPIC_0000001930757269__on…

综合课程设计I报告题目: 血氧仪设计

本实验报告旨在介绍使用MAX30102传感器进行程序设计的实验及其结果。在这个实验中&#xff0c;我们使用MAX30102传感器来测量心率和血氧和温度&#xff0c;并以此为基础设计了一个程序。首先&#xff0c;我们详细了解了MAX30102传感器的工作原理和规格&#xff0c;并熟悉了相关…

自动化文件监控与分类压缩:实现高效文件管理

自动化文件监控与分类压缩&#xff1a;实现高效文件管理 引言 在现代数据处理和文件管理中&#xff0c;如何高效地管理和归档大量文件是一个常见的挑战。特别是在需要根据文件类型进行分类并定期归档的场景下&#xff0c;手动操作不仅耗时且容易出错。为此&#xff0c;我们开…

攻克 NLP 面试:20 个常见技术问题及答案详解

亲爱的小伙伴们&#x1f618;&#xff0c;在求知的漫漫旅途中&#xff0c;若你对深度学习的奥秘、Java 与 Python 的奇妙世界&#xff0c;亦或是读研论文的撰写攻略有所探寻&#x1f9d0;&#xff0c;那不妨给我一个小小的关注吧&#x1f970;。我会精心筹备&#xff0c;在未来…

蓝桥杯-Python

1. 冒泡排序 算法步骤&#xff1a; 比较相邻元素&#xff0c;如果第一个大于第二个则交换从左往右遍历一遍&#xff0c;重复第一步&#xff0c;可以保证最大的元素在最后面重复上述操作&#xff0c;可以得到第二大、第三大、… n int(input()) a list(map(int, input()…