摘要:
父类中定义的虚函数子类对象调用该函数的同名函数时,有三种:(1)子类不定义同名函数,那么子类对象在调用此函数时,是调用了父类的该函数,即进入父类该函数的入口地址(2)子类对象重写此函数(new或者override),那么子类对象在调用此函数时,是调用了子类自己的函数,至于父类该函数的入口地址是否还存在,之后讨论(3)子类定义一个同名函数,那么子类对象在调用此函数时,是调用了子类自己的函数,隐藏父类该函数的入口地址(仍存在),这种情况跟new重写是一样的,换句话说new加和不加是没有影响的那么对于第(2)种,new和override是有区别的,new是在父类函数的入口地址之外再创建一个同名函数入 阅读全文
摘要:
这里有两个概念:变量和对象 变量在线程堆栈上分配,并且随时消亡,对象在托管堆上分配,受垃圾收集器管理。所谓引用,是指变量引用对象,追究起来,其实是个指针。变量消失不等于对象消失,因为可能有多个变量引用同一对象。当一个变量引用一个对象时,这个变量成为这个对象的根。当对象没有根时,它就成为垃圾收集器销毁的目标。而c++中变量分为局部、全局、静态,c#中只有成员(局部)和静态。如局部变量是在函数执行完时消失,那么这个局部变量引用的对象也可以被标识为“可回收”。 阅读全文