implement_dynamic怎么用?手把手教你实现动态功能!

吉云

今天折腾这个“implement_dynamic”,一开始我压根不知道这是啥玩意儿。看到这名字,我还以为是哪个新出的库或者框架,心想这年头新东西出的真快,又得学。

结果,搜一圈,发现这玩意儿好像不是个单独的东西,更像是个……怎么说,一种“零件”?在 C++ 里面用的,而且经常跟什么 MFC ,动态创建,运行时类型信息这些词一起出现。这些词我看着都头大。

不过为搞明白,我还是硬着头皮继续查。看到有人说,这东西跟DECLARE_DYNAMIC是一对儿,一个声明,一个实现。这更让我懵,这都啥跟啥?

implement_dynamic怎么用?手把手教你实现动态功能!

然后,我又看到有人说,这东西能让程序在运行的时候,知道某个对象是啥类型的。这有点像……像算命?程序能自己“算”出对象的类型?听起来挺神的。

我试着去找一些例子,想看看这东西到底怎么用。结果,找到的代码都长得奇奇怪怪的,各种宏定义,各种大写字母,看得我眼花缭乱。什么IMPLEMENT_DYNAMIC(MyClass, CObject),这都是啥?

  • 有人说,要用这东西,得先有个类,还得从某个基类继承。
  • 然后,在类定义的地方,要写上DECLARE_DYNAMIC
  • 在实现文件里,要写上IMPLEMENT_DYNAMIC
  • implement_dynamic怎么用?手把手教你实现动态功能!

这么一套组合拳下来,才能实现所谓的“动态”功能。具体有啥用?有人说是为方便对象的创建,不用在代码里写死,可以在运行的时候根据需要创建不同的对象。这……有点像工厂模式?

我还看到有人提到 Zblog,说它也用到类似的技术,方便开发者进行二次开发。这倒是让我有点兴趣,毕竟 Zblog 我还算熟悉。不过具体是怎么实现的,我还是没搞懂。

总结一下,今天这番折腾,虽然没完全搞明白“implement_dynamic”的来龙去脉,但也算有点收获:

  • 这东西不是一个独立的库或框架,而是 C++ 里面的一种机制。
  • implement_dynamic怎么用?手把手教你实现动态功能!

  • 它跟“动态创建”和“运行时类型信息”有关。
  • 要用它,得写一些看起来很奇怪的宏定义。
  • 这东西好像能让程序更灵活,但具体怎么用,我还得再研究研究。

今天这趟“implement_dynamic”之旅,算是开个头。下次再遇到这玩意儿,至少不会一脸懵逼。不过要真正掌握它,估计还得花不少功夫。

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

目录[+]