中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

PHP虛析構函數怎么用-創(chuàng)新互聯(lián)

這篇文章主要講解了“PHP虛析構函數怎么用”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“PHP虛析構函數怎么用”吧!

目前成都創(chuàng)新互聯(lián)公司已為數千家的企業(yè)提供了網站建設、域名、網站空間、網站托管運營、企業(yè)網站設計、遂川網站維護等服務,公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
預備知識

用一個例子來說明虛析函數的必要性.在程序清單1中,基類A的構造函數動態(tài)分配5個字節(jié),其析構函數負責釋放這塊內存.派生類Z的構造函數動態(tài)分配5000個字節(jié),其析構函數負責釋放這塊內存.

程序清單1
#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中三次調用f函數:

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的構造函數與析構函數輸出了跟蹤信息,程序運行的結果如圖所示:

將析構函數聲明為虛成員函數可以解決程序清單1中的問題:

class A{ // base class
	public:
		A(){
			 cout<<"A() firing"<<endl;
			 p = new char[5]; // allocate 5 bytes
			
		}
		virtual ~A(){
			cout<<"~A() firing"<<endl;
			delete[] p;// free 5 bytes
		}
	
	private:
		char *p;
};
.......

通過定義基類的析構函數~A()為虛成員函數,可以確保其派生類的析構函數也為虛成員函數.為了使代碼更清晰,我們可以明確地使用關鍵字virtual來聲明~Z(),不過即使我們不這樣做,~Z()仍然為虛成員函數,修改后的程序輸出如下圖所示:

現在,由于析構函數已經聲明為虛成員函數,當通過ptr來刪除其所指針的對象時,編譯器進行的是運行期綁定.在這里,因為ptr指向一個Z類型的對象,所以~Z()被調用.我們看到隨后~A()也被調用了,這是通過將析構函數定義為虛成員函數,我們就保證了在調用f時不會產生內存遺漏.

感謝各位的閱讀,以上就是“PHP虛析構函數怎么用”的內容了,經過本文的學習后,相信大家對PHP虛析構函數怎么用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián)網站建設公司,,小編將為大家推送更多相關知識點的文章,歡迎關注!

當前題目:PHP虛析構函數怎么用-創(chuàng)新互聯(lián)
URL鏈接:http://www.rwnh.cn/article12/ddcodc.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供網站改版、微信小程序、軟件開發(fā)標簽優(yōu)化、網站策劃、小程序開發(fā)

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網站建設
依兰县| 乌鲁木齐县| 辽阳县| 宁德市| 方山县| 肥乡县| 通渭县| 合水县| 贵定县| 马龙县| 正定县| 舟山市| 平果县| 贵德县| 灵丘县| 玉屏| 东莞市| 凌源市| 石景山区| 潞西市| 张掖市| 印江| 阳高县| 泾阳县| 丰台区| 南开区| 英德市| 深水埗区| 开平市| 泗水县| 建宁县| 梅州市| 六安市| 龙州县| 吉林省| 镇赉县| 顺义区| 敖汉旗| 南靖县| 五莲县| 梧州市|