从基础实现的角度介绍了一种C++反射实现的方式....除了上面说到的, 一些函数类型擦除的工作, 随着语言特性的不断更新升级(如noexcept关键字的引入), 使用新的特性的函数可能不兼容原有的类型擦除实现, 这种调整兼容相对麻烦, 也容易出错, 随着业务侧使用复杂度的提高...+函数中, 这样在调用发生时, 就能够很简单的通过up value取到注册时附加上去的值了, 如上面代码中的MetaClass指针, class table本身, 我们都通过这种方式带入了对应的c++函数调用中...小建议: 大家写lua/c++交互代码的时候, 可以如示例中一样, 在注释中给出每行api调用后stack发生的变化, 这样能够清晰的知道当前栈的情况 , 整个交互代码的实现会变得更简单, 也有利于其他小伙伴阅读理解相关的代码...集中C++调用Lua的代码, 有统一的地方发起相关的使用, 也方便问题的定位以及代码本身的迭代.