class Base { fn1{...}; virtual fn2{}; } class Derived:Base { new fn1{...}; override fn2{...}; } 那么Derived实例化以后内存里面是什么样的啊? 比如说,有fn1,new fn1,Base.fn2,Derived.fn2之类的。谢谢
有2个fn,但因为用了new,隐藏了父类的方法,Derived A = new Derived(),A.fn1()调用的是自己的Derived.fn2()
而Base A = new Derived(),A.fn1(),调用的是Base.fn1(),因为她是通过call [Derived方法表地址 +fn1在Base中位置]来找方法地址的.
而虚方法集成时,fn1的位置不不变的,也就是在方法表的第5行