delphi 的一些备忘
override:覆蓋;
overload:重載;
Reintroduce:重定義,它的引入是為了屏蔽父類的一個(gè)虛方法,而在子類中生成一個(gè)新的方法;?其實(shí)你不使用reintroduce也會(huì)覆蓋屏蔽父類的方法的但是會(huì)產(chǎn)生一個(gè)警告!
virtual(虛擬方法)和dynamic(動(dòng)態(tài)方法)表示:
后代類可以override祖先的同名方法,在override過程的實(shí)現(xiàn)里,還可以用inherited調(diào)用祖先的同名方法,virtual(虛擬方法)和dynamic(動(dòng)態(tài)方法)兩者的差異在于方法指針的保存,virtual方法使用VMT(Virtual Method Table),也就是說,每一個(gè)該類的后代類都擁有整個(gè)的VMT,其優(yōu)點(diǎn)在于速度快,因?yàn)轭惖膶?shí)例可以直接從VMT中找到該方法的入口,但它也耗用較多的內(nèi)存;相對的dynamic方法則不使用VMT,如果類的后代沒有override該方法,那么需要從它的父類去查找方法的入口,它的優(yōu)點(diǎn)是少用內(nèi)存,因?yàn)樽宇愔槐A羲黲verride的方法入口,缺點(diǎn)是速度較慢,尤其在多級繼承的時(shí)候,可能需要前溯好多層才找到方法的。
一般的理解是,如果該方法其后代類基本都需要override的,使用virtual,如果該方法不經(jīng)常在后代類中被override的,使用dynamic。
轉(zhuǎn)載于:https://www.cnblogs.com/yryz/archive/2011/12/12/2284596.html
總結(jié)
以上是生活随笔為你收集整理的delphi 的一些备忘的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JZOJ 2678. 树B
- 下一篇: 计算机网络自顶向下方法【七】——链路层