MFC DYNAMIC_DOWNCAST vs. dynamic_cast

MFC DYNAMIC_DOWNCAST vs. dynamic_cast

本文关键字:dynamic cast vs DOWNCAST DYNAMIC MFC      更新时间:2023-10-16

MFC 库中的DYNAMIC_DOWNCAST和标准C++ dynamic_cast运算符有什么区别?是否可以对 MFC 对象使用安全dynamic_cast而不是DYNAMIC_DOWNCAST

当我的类包含DECLARE_DYNAMIC宏和IMPLEMENT_DYNAMIC宏时,是否可以使用运算符dynamic_cast或者必须对此类对象使用DYNAMIC_DOWNCAST宏?

MFC 库中的DYNAMIC_DOWNCAST和标准C++ dynamic_cast运算符有什么区别?

DYNAMIC_DOWNCAST和dynamic_cast通过不同的机制在运行时实现相同的目标,即有关对象数据类型的信息。DYNAMIC_DOWNCAST通过使用一组宏来声明和实现用于获取对象的类信息的方法。dynamic_cast通过使用由编译器实现的运行时类型信息来实现相同的目标。

是否可以对 MFC 对象使用安全dynamic_cast而不是DYNAMIC_DOWNCAST? 当我的类包含DECLARE_DYNAMIC宏和IMPLEMENT_DYNAMIC宏时,是否可以使用dynamic_cast运算符,或者必须对此类对象使用DYNAMIC_DOWNCAST宏?

如果使用 RTTI 进行编译并且至少有一个虚拟方法,则允许使用 dynamic_cast。DYNAMIC_DOWNCAST实现了一堆虚拟方法,因此您只需检查编译器是否支持 RTTI 以及它是否已打开。