首页 > 编程语言 > 详细

MFC中动态创建DECLARE_DYNCREATE和运行时类型识别DECLARE_DYNAMIC

时间:2019-11-10 19:42:15      阅读:140      评论:0      收藏:0      [点我收藏+]

DECLARE_DYNCREATE:支持动态创建
DECLARE_DYNAMIC:支持运行时类型识别(RTTI)
凡是支持动态创建的,一定支持RTTI。

#define DECLARE_DYNCREATE(class_name) \
    DECLARE_DYNAMIC(class_name)     static CObject* PASCAL CreateObject();

#define DECLARE_DYNAMIC(class_name) protected:     static CRuntimeClass* PASCAL _GetBaseClass(); public:     static const CRuntimeClass class##class_name;     static CRuntimeClass* PASCAL GetThisClass();     virtual CRuntimeClass* GetRuntimeClass() const; \

宏定义中 #:表示字符串  ##:表示连接

在用#define 定义时 , 斜杠("\")是用来续行的,

"#"用来把参数转换成字符串,是给参数加上双引号。
"##"则用来连接前后两个参数,把它们变成一个参数,
"#@"是给参数加上单引号。下面的例子会使您很容易理解。
#define CAT(x,y)           x##y       /* CAT("1","abc") => "1abc" CAT(1, 34) => 134 */
#define TOCHAR(a)     #@a       /* TOCHAR(1) => ‘1‘ */
#define TOSTRING(x)     #x      /* TOSTRING(1) => "1" */

MFC中动态创建DECLARE_DYNCREATE和运行时类型识别DECLARE_DYNAMIC

原文:https://www.cnblogs.com/htj10/p/11831404.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!