implement_dynamic方法有哪些?这几种方法最常用!

吉云

今天搞下“运行时类型识别”这玩意,简单来说就是IMPLEMENT_DYNAMIC这个宏。这东西在MFC里面还挺常见的,所以我就想弄明白它到底是怎么回事。

我先是找些资料看看,发现这东西主要是为支持“动态创建”这个功能的。啥意思?就是你可以在程序运行的时候,根据需要创建某个类的对象,而不是在写代码的时候就定死。

然后我就去看它的定义,发现它是个宏,展开后会帮你做一些事情,具体是啥咱先不管,反正就是能实现一些功能。

implement_dynamic方法有哪些?这几种方法最常用!

具体怎么用?

你得有个类,比方说叫CMyClass,然后你得在类的声明里面加上DECLARE_DYNAMIC(CMyClass)。这一步是告诉大家:“我这个类支持运行时类型识别!”

光说不行,你还得在实现文件(.cpp)里面加上IMPLEMENT_DYNAMIC(CMyClass, CObject)。这一步是真正让这个类具备运行时类型识别的能力。这里要注意,CObjectCMyClass的基类,你得根据你自己的类来改。

  • 在头文件里用DECLARE_DYNAMIC声明一下。
  • 在.cpp文件里用IMPLEMENT_DYNAMIC实现一下。
  • implement_dynamic方法有哪些?这几种方法最常用!

我照着做,建个类,加这两行代码,编译运行,好像也没啥特别的。

然后我又去翻翻资料,发现这东西跟typeiddynamic_cast这两个运算符有点关系。这两个运算符也是用来做运行时类型识别的,不过我这回没怎么用它们,下次有机会再试试。

我还看到有人说,如果编译的时候遇到跟IMPLEMENT_DYNAMIC有关的问题,可能是哪里写错,要仔细检查一下。

这回实践就是把IMPLEMENT_DYNAMIC这个宏用一下,解它的基本作用和用法。感觉这东西还是挺有用的,以后写代码的时候可能会用到。

虽然没完全搞透彻它具体是怎么实现的,但起码知道它是干啥的,也算有点收获!

implement_dynamic方法有哪些?这几种方法最常用!

免责声明:由于无法甄别是否为投稿用户创作以及文章的准确性,本站尊重并保护知识产权,根据《信息网络传播权保护条例》,如我们转载的作品侵犯了您的权利,请您通知我们,请将本侵权页面网址发送邮件到qingge@88.com,深感抱歉,我们会做删除处理。

目录[+]