有人能用几个术语解释一下DYNAMIC_CLASSes吗?



我已经开发了一段时间了。这些野兽不时出现在MFC, wxWidgets代码中,但我找不到关于它们究竟做什么的任何信息。

据我所知,

是在dynamic_cast被集成到核心c++之前出现的。其目的是允许动态创建对象和运行时动态强制转换。

但这是我找到的所有信息的终点。

我遇到了一些示例代码,在DLL中使用DECLARE_DYNAMIC_CLASS和IMPLEMENT_DYNAMIC_CLASS,这是用于导出类的。这个结构让我很困惑。

为什么要这样做?这是一个基于插件的方法,在那里你调用LoadLibrary,然后调用createddynamicclass来获得一个可以被转换为所需类型的指针?

DECLARE/IMPLEMENT_DYNAMIC在DLL边界上工作吗?由于连类对DLLEXPORT都不是那么安全,这里我们除了有一个自定义的RTTI表之外还有一些现有的问题。

是否有可能从另一个DLL的DYNAMIC_CLASS派生我的类,它将如何工作?

谁能告诉我这些东西是干什么用的,或者我在哪里可以找到一个话题超过两句话?

这些东西将额外的类型信息附加到您的类中,从而允许以与运行时无关的方式进行RTTI,允许使用工厂来创建您的类以及许多其他东西。您可以在COM、QMetaObject等中找到类似的方法

您看过DECLARE/IMPLEMENT_DYNAMIC的定义吗?

在微软的世界里,所有的大写字母通常表示一个宏,所以你可以只查找定义,并尝试从那里找出它在做什么。如果你在Visual Studio中,你可以点击一个键来跳转到定义-看看它说什么,然后查找并尝试从那里开始工作。

相关内容

最新更新