RTTI、反射

前言

  说实话,弄清楚这几个概念花了我很长的时间。但是弄清楚这几个概念是非常有必要的,这篇文章是我对这几个概念的总结。

RTTI

  RTTI的英文全称是"Runtime Type Identification",它指的是程序在运行的时候才确定需要用到的对象是什么类型的。直观一点来看,举个例子:目前有一个方法可能返回不同类的实例,如何确定返回的到底是什么类呢?这就是所谓的运行的时候才确定类型,也就是所谓的动态多态。在 C++ 中通过 typeid 和 dynamic_cast 实现了 RTTI。

  与动态多态相对应的就是静态多态。在 C++ 里静态多态一般指的是用模版和重载,在编译时就能确定对象类型的多态方法。

  RTTI 一般用于确定返回不同的派生类时具体是哪个类。

反射

  反射(Reflection)在 Wikipedia 上的定义是:"In computer science, reflection is the ability of a process to examine, introspect, and modify its own structure and behavior"。换而言之,反射赋予某个进程在运行的过程中检查和修改进程本身的功能。

  一段程序被编译之后生成的二进制可执行文件在被执行的过程中会被载入到内存的 text 段中,一般来说 text 段是只读的,这也就意味着程序所有的行为会在编译时确定,一旦编译完成就不会更改。然而具体而言,反射提供了让程序在运行时获取类的完整结构信息、创建类、修改类成员变量、调用类方法等等一系列功能。简而言之,通过这一系列的功能,程序能够在运行过程中更为灵活地根据自身需要动态载入、调用各种类。

  Java、C#、Go 等语言已经在语言层面支持了反射特性,而 C++ 这种较为保守的语言要使用反射特性就得通过一些奇淫技巧了,而且因为 C++ 没有在语言层面提供返回类的 metadata 的能力,所以很多属性要靠手动注册,这里可以参考RTTR的实现:https://github.com/rttrorg/rttr

评论卡

已有 16 条评论

  1. toqdcomzyk
    toqdcomzyk
    2024年11月29日

    你的文章让我感受到了不一样的风景,谢谢分享。 http://www.55baobei.com/W9IrRXniTj.html

    回复

  2. qylqbakotw
    qylqbakotw
    2024年12月04日

    《大学生士兵的故事》国产剧高清在线免费观看:https://www.jgz518.com/xingkong/40326.html

    回复

  3. qzamykbaaa
    qzamykbaaa
    2024年12月08日

    你的文章让我感受到了不一样的风景,谢谢分享。 https://www.4006400989.com/qyvideo/40321.html

    回复

  4. mujwjutjih
    mujwjutjih
    2024年12月15日

    你的文章让我感受到了不一样的风景,谢谢分享。 http://www.55baobei.com/d1ebID7Mlx.html

    回复

  5. uumrcohmze
    uumrcohmze
    1月3日

    《蓝精灵第一季》欧美动漫高清在线免费观看:https://www.jgz518.com/xingkong/26047.html

    回复

  6. onqytqeygv
    onqytqeygv
    1月6日

    哈哈哈,写的太好了https://www.lawjida.com/

    回复

  7. yilhfxfbpy
    yilhfxfbpy
    2月28日

    若能在案例选择上更贴近现实,说服力会进一步提升。

    回复

  8. zfdubpaved
    zfdubpaved
    3月1日

    创新略显不足,可尝试引入多元视角。

    回复

  9. qiwlwnewlw
    qiwlwnewlw
    3月2日

    全球视野与本土实践结合恰到好处。

    回复

  10. hmsefbxnfv
    hmsefbxnfv
    3月2日

    文笔细腻,描写生动,画面感跃然纸上。

    回复

  11. hrpdlcfoln
    hrpdlcfoln
    3月2日

    文字如刀,剖开表象直抵本质。

    回复

  12. wqyogiwhxd
    wqyogiwhxd
    3月2日

    ?总结与建议类?

    回复

  13. vwauviuaii
    vwauviuaii
    3月2日

    这篇文章提供了宝贵的经验和见解,对读者有很大的启发和帮助。

    回复

  14. jipshgrxng
    jipshgrxng
    3月2日

    作者以简洁明了的语言,传达了深刻的思想和情感。

    回复

  15. etifqowxyz
    etifqowxyz
    3月4日

    文字流畅如丝,语言优美动人,读来令人心旷神怡。

    回复

  16. fknnaatgth
    fknnaatgth
    3月4日

    文章的叙述风格独特,用词精准,让人回味无穷。

    回复