DECLARE_DYNCREATE(DECLARE_DYNAMIC)与IMPLEMENT_DYNCREATE(IMPLEMENT_DYNAMIC)

2023-11-19

一、问题

看源码,发现这两组宏的实现是有细微差别的,需要配合使用

二、原理

这两组宏的作用类似,但有一些细微的区别:

  1. DECLARE_DYNCREATEIMPLEMENT_DYNCREATE

    • DECLARE_DYNCREATE 用于在类的声明中启用支持对象的动态创建和RTTI。
    • IMPLEMENT_DYNCREATE 用于在源文件中实现这个动态创建和RTTI支持。
    • 这对于在运行时创建对象和检查对象类型非常有用,例如在文档/视图架构中。
  2. DECLARE_DYNAMICIMPLEMENT_DYNAMIC

    • DECLARE_DYNAMIC 用于在类的声明中启用RTTI支持,但通常不支持动态对象创建。
    • IMPLEMENT_DYNAMIC 用于在源文件中实现RTTI支持。
    • 这对于在运行时检查对象类型非常有用,但不支持动态创建对象。

三、实例

示例使用 DECLARE_DYNCREATEIMPLEMENT_DYNCREATE

class CMyObject : public CObject
{
    DECLARE_DYNCREATE(CMyObject)

public:
    CMyObject();  // 构造函数

    // 其他成员函数和属性

    // 声明对象的序列化函数
    virtual void Serialize(CArchive& ar);
};

IMPLEMENT_DYNCREATE(CMyObject, CObject)

示例使用 DECLARE_DYNAMICIMPLEMENT_DYNAMIC

class CMyObject : public CObject
{
    DECLARE_DYNAMIC(CMyObject)

public:
    CMyObject();  // 构造函数

    // 其他成员函数和属性
};

IMPLEMENT_DYNAMIC(CMyObject, CObject)

总之,DECLARE_DYNCREATEIMPLEMENT_DYNCREATE 主要用于支持对象的动态创建和RTTI,而 DECLARE_DYNAMICIMPLEMENT_DYNAMIC 主要用于支持RTTI。你可以根据你的需求选择适当的宏组合来满足你的类的需求。

参考:

DECLARE_DYNCREATE(DECLARE_DYNAMIC)与IMPLEMENT_DYNCREATE(IMPLEMENT_DYNAMIC)解析_无糖酸奶的博客-CSDN博客

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DECLARE_DYNCREATE(DECLARE_DYNAMIC)与IMPLEMENT_DYNCREATE(IMPLEMENT_DYNAMIC) 的相关文章

随机推荐

  • 数据可视化笔记9 可视化交互与评估

    概括 交互的概念 交互准则 交互延时 交互成本 交互场景变化 可视化交互的主要类型 分类 选择 再布局 视觉编码 抽象化 具体化 过滤 链接 交互模型 概览 细节 焦点 上下文 对偶界面 多种混合交互方式 混合多种交互设备 交互空间 屏幕空
  • IDEA连接mysql又报错!Server returns invalid timezone. Go to ‘Advanced‘ tab and set ‘serverTimezone‘ prope

    目录 错误界面 解决方案 第一 设置mysql时区 第二 同步mysql驱动 前进的道路充满荆棘 错误界面 IDEA连接mysql 地址 用户名 密码 数据库名 全都配置好了 点测试连接 咔 不成功 界面是这样的 翻译过来就是 服务器返回无
  • 1345:香甜的黄油(Dijkstra)---信息学奥赛一本通

    题目描述 农夫John发现做出全威斯康辛州最甜的黄油的方法 糖 把糖放在一片牧场上 他知道N 1 N 500 只奶牛会过来舔它 这样就能做出能卖好价钱的超甜黄油 当然 他将付出额外的费用在奶牛上 农夫John很狡猾 像以前的巴甫洛夫 他知道
  • java中的file.encoding属性到底由什么决定?

    首先先上一段代码 public class PropertiesTest public static void main String args System out println file encoding System getProp
  • CentOS7 中把yum源更换成163源

    CentOS默认yum源是国外的 速度无法保证 用起来很不爽 今天我们把默认源换成国内的163源 163是目前国内最好用的源 速度是相当快的 还有一些比较好的源 比如阿里源 1 首先我们把CentOS7配置为可以上外网的环境 这里不会的可以
  • Python requests下载超大文件/批量下载文件

    一 下载超大文件 使用 python 下载超大文件 直接全部下载 文件过大 可能会造成内存不足 这时候要使用 requests 的 stream 模式 主要代码如下 iter content 一块一块的遍历要下载的内容 iter lines
  • Android 键盘小设置

    键盘设置主要是对activity页面的控制 清单文件对应的activity配置如下 弹出键盘 上移屏幕 android windowSoftInputMode stateVisible adjustResize 弹出键盘 覆盖屏幕 andr
  • 眼图测量

    百度百科 1 眼图测量解释 https baike baidu com item E7 9C BC E5 9B BE E6 B5 8B E9 87 8F 5938447 fr aladdin
  • YOLO算法v1-v3原理通俗理解

    YOLO算法v1 v3原理通俗理解 深度学习检测方法简述 我们所使用的目标检测 其实就是让机器在图片找到对应的目标 然后给图片上的目标套上一个框框 并贴上标签 比如如果图片上有人 就把人框起来并标注一个 person 使用深度学习进行目标检
  • Python学习第八天——模块

    模块 一 什么是模块 模块是一系列功能的集合体 1 模块分为四种类别 一个 py就是可以是一个模块 包 就是一个存放 init py文件的文件夹 使用C编写并链接到Python解释器的内置模块 已被编译为共享库或DLL的C或C 扩展 2 模
  • 量子速写(网站+小程序)

    使用方法非常简单 只需要输入标题 选择文章长短 它就能给你生成一篇AI文章 nbsp nbsp nbsp nbsp 泪奔 它是根据能在网上搜到的相关信息 进行AI组合的 所以不涉及侵权 并且写的合情合理 nbsp nbsp nbsp 加大难
  • 学姐去微软了

    这篇文章是我邀请在微软工作的学姐写的 最近正好是金九银十校招季 所以我邀请学姐写下当年她面试时的一些经验 希望对大家有帮助 自我介绍 烤冷面 女 hitCS专业本 硕 2018年之前没有PM实习经验 2018年暑期实习拿到腾讯和微软的PM岗
  • 如何查看和修改Windows远程桌面端口

    Windows远程桌面的默认端口为3389 基于安全性考虑 部分用户有修改默认端口的需要 以减少通过远程桌面恶意攻击和扫描主机的次数 因此今天带大家一起学习下 如何查看和修改Windows远程桌面的默认端口 一 查看Windows远程桌面端
  • HTML from 表单提交请求到servlet 实例

    HTML源码展示
  • ads+jlink和keil+jlink调试环境配置

    ads1 2 and jlinkv8 1 安装ads1 2和jlink驱动Setup JLinkARM V408i exe 安装ads1 2时 最后在100 时如果持续时间长 耐心等一下吧 没有等待而点了cancel 则之后就不好重装了 解
  • [交互]AJAX

    交互 AJAX 创建 XMLHttpRequest 发送请求 服务器响应 XMLHttpRequest readyState 状态值 响应数据 请求状态变更回调函数 XMLHttpRequest status 的值 常用状态码设置 AJAX
  • css如何设置背景颜色透明?css设置背景颜色透明度的两种方法介绍

    在网页布局中有时为了网页的整体美观 可能需要将网页中的某些部分设置为背景颜色透明 那么如何设置背景颜色透明呢 本篇文章就来给大家介绍一下css设置背景颜色透明的方法 在css中设置背景颜色透明的方法有两种 一种是通过rgba方式设置 另一种
  • ubuntu+anaconda3+python配置basicsr环境,真实有效

    活动地址 CSDN21天学习挑战赛 1 环境要求 BasicSR官方网站 Python gt 3 7 推荐使用 Anaconda 或 Miniconda PyTorch gt 1 3 NVIDIA GPU CUDA 2 Python3 8
  • Anaconda常用命令

    Anaconda常用命令 虚拟环境创建与切换 查看当前conda的信息 conda info 查看当前已经创建的虚拟环境 conda env list 或 conda info e 或conda info env 创建虚拟环境 conda
  • DECLARE_DYNCREATE(DECLARE_DYNAMIC)与IMPLEMENT_DYNCREATE(IMPLEMENT_DYNAMIC)

    一 问题 看源码 发现这两组宏的实现是有细微差别的 需要配合使用 二 原理 这两组宏的作用类似 但有一些细微的区别 DECLARE DYNCREATE 和 IMPLEMENT DYNCREATE DECLARE DYNCREATE 用于在类