C++ 强制转换
dynamic_cast: 通常在基类和派生类之间转换时使用,run-time cast。
const_cast: 主要针对const和volatile的转换。
static_cast: 一般的转换,no run-time check.通常,如果你不知道该用哪个,就用这个。
reinterpret_cast: 用于进行没有任何关联之间的转换,比如一个字符指针转换为一个整形数。
QT框架提供的强制类型转换方法:
qobject_cast
该函数类似于 C++中的dynamic_cast,但执行速度比dynamic_cast 更快,且不需要
C++的RTTI 的支持,但qobject_cast 仅适用于QObject 及其派生类
1 | QObject *obj = new QTimer; // QTimer inherits QObject |
qgraphicsitem_cast :
只适用于QGraphicsItem
的子类
它的优势在于,它并不使用 RTTI,而且转换失败的话会返回 nullptr
qvariant_cast :
QVariant类型转换为实际的类型