這篇文章主要講解了“PHP虛析構函數(shù)怎么用”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP虛析構函數(shù)怎么用”吧!
創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為江油企業(yè)提供專業(yè)的成都網(wǎng)站設計、做網(wǎng)站,江油網(wǎng)站改版等技術服務。擁有十載豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
用一個例子來說明虛析函數(shù)的必要性.在程序清單1中,基類A的構造函數(shù)動態(tài)分配5個字節(jié),其析構函數(shù)負責釋放這塊內(nèi)存.派生類Z的構造函數(shù)動態(tài)分配5000個字節(jié),其析構函數(shù)負責釋放這塊內(nèi)存.
#includeusing namespace std; class A{ // base class public: A(){ cout<<"A() firing"< 在main中三次調(diào)用f函數(shù):
void f(){ A *ptr; //pointer to base class ptr = new Z(); // pointer to derived class object delete ptr; //~A() fires but not ~z() }//***** Caution:50000 bytes of inaccessible storage由于類A和Z的構造函數(shù)與析構函數(shù)輸出了跟蹤信息,程序運行的結果如圖所示:
現(xiàn)在,由于析構函數(shù)已經(jīng)聲明為虛成員函數(shù),當通過ptr來刪除其所指針的對象時,編譯器進行的是運行期綁定.在這里,因為ptr指向一個Z類型的對象,所以~Z()被調(diào)用.我們看到隨后~A()也被調(diào)用了,這是通過將析構函數(shù)定義為虛成員函數(shù),我們就保證了在調(diào)用f時不會產(chǎn)生內(nèi)存遺漏.
感謝各位的閱讀,以上就是“PHP虛析構函數(shù)怎么用”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對PHP虛析構函數(shù)怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關知識點的文章,歡迎關注!
當前標題:PHP虛析構函數(shù)怎么用
分享路徑:http://weahome.cn/article/pdcjsc.html