只是针对新的内存操作,而原来的s对象中从tbase中继承来的x,y不会变,还是0,但我们发现,s中的x,y已经改变,所以也可以证明tbase.create没有分配新的内存,只是对原有内存中的x,y进行设置。
第三点,跟踪。这是最简单,最一目了然的方法,看看inherited create;到底有没有调用newinstance,实验证明,跟本没有调用。
但是,如果把tsub.create中的inherited create;改为tbase.create;情况则大不同了,用上面三种方式发现,它又分配了新的堆内存,这样不但没有达到程序员初始化数据的目的,反而造成了内存泄漏,而这样的bug是很难找到的。