前言
在 C++ 中,类型转换是一项常见的操作,比如将 int 转换为 char 或将 QString 用于 QMessageBox。但是,为什么我们需要将一个类转换为另一个类呢?本文将解释 qobject_cast 是什么,它的作用以及为什么需要类型转换。
dynamic_cast 和 qobject_cast 的概述
什么是 dynamic_cast?
在学习 qobject_cast 之前,我们首先需要了解 C++ 的 dynamic_cast。 dynamic_cast 主要用于处理多态(polymorphism),通过运行时类型识别(RTTI - Run Time Type Information)来进行对象的类型转换。
例如,假设我们有一个汽车工厂函数:
Car* make_car(string brand) {if (brand == "BMW") {return new BmwCar;}if (brand == "Audi") {