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