zoukankan      html  css  js  c++  java
  • DECLARE_DYNCREATE与DECLARE_DYNAMIC区别

    DECLARE_DYNAMIC 表示可以运行时识别该类

    DECLARE_DYNCREATE 包含了DECLARE_DYNAMIC的功能,并且可以在运行过程中动态创建对象。如果需要动态创建类对象,需要使用这个宏定义。

     

    DECLARE_DYNCREAT定义如下:

    #define DECLARE_DYNCREATE(class_name)

    DECLARE_DYNAMIC(class_name)

    static CObject* PASCALCreateObject();(这一句就是DECLARE_DYNCREATE多出来的一句)

     

    这里是DECLARE_DYNAMIC声明的(本质上就是声明了一个CruntimClass,并且提供了一个可以获取CruntimeClass的函数)

    DECLARE_DYNAMIC(class_name)

    public:

    staticconst CRuntimeClassclass##class_name;

    virtual CRuntimeClass* GetRuntimeClass()const;

     

    RUNTIME_CLASS的本质,就是获取该类的类型为CruntTimeClass的成员变量

    ((CRuntimeClass*)(&class_name::class##class_name))

  • 相关阅读:
    Activity的启动模式
    Activity的生命周期
    C之静态内存和动态内存
    C之指针的加法
    C之函数返回一个以上的值
    C之交换数据案例
    C之自定义类型
    C之枚举
    联合体
    C之结构体
  • 原文地址:https://www.cnblogs.com/ybqjymy/p/15156225.html
Copyright © 2011-2022 走看看