这是一个有点离奇的问题.我的目标是理解语言设计决策并确定C++中反射的可能性.
为什么C++语言委员会不会在语言中实现反思?对于不在虚拟机上运行的语言(如java),反射是否太难?
如果要实现C++的反射,那么挑战是什么?
我想反射的使用是众所周知的:编辑器可以更容易编写,程序代码更小,可以为单元测试生成模拟等等.但是,如果你也可以对反射的使用发表评论,那就太棒了.
我最近遇到了一个问题,我使用的是C#,它是通过使用反射设置一个私有成员来解决的.
我惊呆了,发现设置私有成员/字段并运行私有方法是C#中允许和可能的事情.这不是一个如何做这些事情的问题,他们有很好的记录,我的问题是:为什么?
如果将字段/成员/方法设置为私有/内部,为什么C#作为一种语言允许将这些字段设置在范围之外?我认为这会抛出某种异常.如果类要求更改或设置它们不会有方法或构造函数?
反思是否打破了私人方法的想法?因为可以从类外部访问私有方法吗?(也许我不理解反思的意思或错过别的东西,请告诉我) http://en.wikipedia.org/wiki/Reflection_%28computer_science%29
编辑: 如果relection打破了私有方法的想法 - 我们是否只将私有方法用于程序逻辑而不用于程序安全?
谢谢