【问题标题】:MFC DYNAMIC_DOWNCAST vs. dynamic_castMFC DYNAMIC_DOWNCAST 与 dynamic_cast
【发布时间】:2016-01-01 01:27:14
【问题描述】:

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

当我的类包含DECLARE_DYNAMICIMPLEMENT_DYNAMIC 宏时,我可以使用dynamic_cast 运算符还是必须对此类对象使用DYNAMIC_DOWNCAST 宏?

【问题讨论】:

标签: c++ casting mfc


【解决方案1】:

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 并打开它。

【讨论】:

    猜你喜欢
    • 2011-06-06
    • 1970-01-01
    • 2010-11-18
    • 2014-05-29
    • 1970-01-01
    • 1970-01-01
    • 2019-11-12
    • 2012-12-28
    • 2010-09-06
    相关资源
    最近更新 更多