如下图,父类CParent实例 parentA是从子类childA 隐式转换获得的,在VS 查看的时候,发现值还是子类的值,如何才能保证得到一个纯净的父类,不包含任何子类属性?
你要建立下 对象和引用的概念
对象是内存里真实存在的,引用是指向一个对象的结构描述,告诉你指向的对象里有什么.好让你能使用这个对象.
你用父类引用指向子类对象.子类对象并不会变成父类对象.
代码里的强转转的也是引用.而不是对象.
new出一个对象.就永远是那个对象.因为内存空间是在申请时就固定.你想要修改一块内存的大小结构.就得释放掉从新申请一块.
感觉确实是这个道理。VS里面显示的是当前父类对象所执行的值,而且VS比较聪明,帮我们把所指向的值提示了出来,对吧
你创建纯净的父类就是纯净父类了。
引用可以理解为地址,底层的一种内存管理而已。你设想一下你new的时候分配内存,你明明告诉别个分配3,你说你想得到2...,别说机器,人都没法跟你交流,对不对。时间会让你慢慢理解的。
e嗯,这个是引用类指向内存空间的问题吧。VS里的提示,应该是所指向的内存中实际的值,而且智能地帮我们把该值的属性展示了出来
一般情况下是做不到,但你要这样走歪路不是说不能走通,但限制比较苛刻,必须要父类可以实例化,否则没的玩。
实现也是相当的挫,当然你这需求本来就已经很挫了。
找个会丢失类型信息的序列化方式对对象实例进行序列化,使用序列化后的结果直接反序列化为父类。。。。
我感觉用这种办法会折寿的。。。
这个确实是个比较鬼魅的方法,哈哈
@HNLY: maping就好,前提是字段相同