c++ so 反射_C++反射的方法与实现

1. 什么是反射?

反射是程序获取自身信息的能力

2. 反射有什么用?

可以用于动态创建类型,跨语言跨平台数据交互,持久化,序列化等等。

3. 反射包含哪些功能?

至少包含以下功能:枚举所有member

获取member的name和type

能够get/set member

4. 有哪些反射方法?

反射主要有3种实现方法结构化语言

比如xml/json/yml/protobuf等语言,或者dicom,tiff等数据格式,在标准里规范了如何获取字段的方法。

运行期反射

大多数语言都支持运行期反射,比如.NET系列,js, python, perl, matlab等。

编译期反射

目前只发现D语言有这个功能。C++用宏也能实现

5. C++反射有哪些方法?

5.1 编译器支持C++20据说有编译期反射,但那是可能是N年后的事情了。

MSVC的CLR扩展支持运行期反射,但CLR不算标准C++。

clang的智能补全插件,修改一下能输出结构体信息,可以做个工具,但这只适合clang。

5.2 运行期支持

各种debugger都能取得结构体信息的,可以利用。有些编译器在realse的时候,不输出符号,需要设置realse输出符号表才行。优点是用起来简单,缺点是跨平台不太好,网上能搜到一些代码,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值