CRuntimmeClass 是 C++ 中 malloc 或新方法的等效概念吗

Posted

技术标签:

【中文标题】CRuntimmeClass 是 C++ 中 malloc 或新方法的等效概念吗【英文标题】:Is CRuntimmeClass the equivalent concept to malloc or new method in C++ 【发布时间】:2021-02-18 17:43:55 【问题描述】:

我对@9​​87654322@ 的概念感到困惑,所以这是我的理解: 1 在 CPP 中,我们有 malloc 或 new,以便能够在堆上使用内存,并且我们可以在程序运行时“动态”更改内存的大小。 2 在 MFC 中有一个 CRuntimeClass (https://docs.microsoft.com/en-us/cpp/mfc/reference/cruntimeclass-structure?view=msvc-160#createobject),在使用 IMPLEMENT_DYNAMIC 之后,我不是很熟悉,我想这类似于 new/malloc 函数

【问题讨论】:

【参考方案1】:

CRuntimeClass 是 MFC 对类型的元数据进行编码以允许它在类型仅作为字符串可用时创建对象的方式。在从 CDocTemplate 构造文档实例、将视图与文档关联或序列化和反序列化结构化数据时,这是必需的。

为了实现这一点,MFC 维护了一个应用程序全局内存注册表,其中注册了相应的类型。可以在给定类型名称的情况下查询此注册表以获取 CRuntimeClass 实现。

CreateObject 不等同于new。它使用new 来构造可用作字符串表示的类型的实例。它可以被认为是一种工厂方法。

【讨论】:

以上是关于CRuntimmeClass 是 C++ 中 malloc 或新方法的等效概念吗的主要内容,如果未能解决你的问题,请参考以下文章

C++中WinMain、main和DllMain的区别

清除非字母字符的字符串ma

C++ 相互递归变体类型

派生类 C++

我在地图 C++ 中遇到了 count() 的意外行为

如何编写混合 C 和 C++ 的 makefile