這篇文章主要講解了“PHP虛析構(gòu)函數(shù)怎么用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“PHP虛析構(gòu)函數(shù)怎么用”吧!
創(chuàng)新互聯(lián)長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為江油企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站,江油網(wǎng)站改版等技術(shù)服務(wù)。擁有十載豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
用一個(gè)例子來說明虛析函數(shù)的必要性.在程序清單1中,基類A的構(gòu)造函數(shù)動態(tài)分配5個(gè)字節(jié),其析構(gòu)函數(shù)負(fù)責(zé)釋放這塊內(nèi)存.派生類Z的構(gòu)造函數(shù)動態(tài)分配5000個(gè)字節(jié),其析構(gòu)函數(shù)負(fù)責(zé)釋放這塊內(nèi)存.
#include <iostream> using namespace std; class A{ // base class public: A(){ cout<<"A() firing"<<endl; p = new char[5]; // allocate 5 bytes } ~A(){ cout<<"~A() firing"<<endl; delete[] p;// free 5 bytes } private: char *p; }; class Z: public A {//derived class public: Z(){ cout<<"Z() firing"<<endl; q = new char[5000];//allocate 5000 bytes } ~Z(){ cout<<"~Z() firing"<<endl; delete[] q; //free 50000 bytes } private: char *q; }; void f(); int main(){ for(unsigned i =0; i<3; i++) f(); return 0; } 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
在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的構(gòu)造函數(shù)與析構(gòu)函數(shù)輸出了跟蹤信息,程序運(yùn)行的結(jié)果如圖所示:
現(xiàn)在,由于析構(gòu)函數(shù)已經(jīng)聲明為虛成員函數(shù),當(dāng)通過ptr來刪除其所指針的對象時(shí),編譯器進(jìn)行的是運(yùn)行期綁定.在這里,因?yàn)閜tr指向一個(gè)Z類型的對象,所以~Z()被調(diào)用.我們看到隨后~A()也被調(diào)用了,這是通過將析構(gòu)函數(shù)定義為虛成員函數(shù),我們就保證了在調(diào)用f時(shí)不會產(chǎn)生內(nèi)存遺漏.
感謝各位的閱讀,以上就是“PHP虛析構(gòu)函數(shù)怎么用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對PHP虛析構(gòu)函數(shù)怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
本文名稱:PHP虛析構(gòu)函數(shù)怎么用
URL地址:http://jinyejixie.com/article32/pdcjsc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、網(wǎng)站設(shè)計(jì)、全網(wǎng)營銷推廣、品牌網(wǎng)站設(shè)計(jì)、面包屑導(dǎo)航、網(wǎng)站導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)