本篇文章給大家分享的是有關(guān)C++中如何使用析構(gòu)函數(shù),小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)服務(wù),電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)宜陽免費做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設(shè)實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
C#中的終結(jié)器(也就是析構(gòu)函數(shù))類似于C++析構(gòu)函數(shù),但是由于編譯時無法確定終結(jié)器的執(zhí)行時機,因此兩者實際上存在相當(dāng)大的區(qū)別。垃圾回收器調(diào)用C#終結(jié)器的時機是在對象上一次使用之后,但是在應(yīng)用程序關(guān)閉之前的某個時間。相反,只要一個對象(而非指針)超出范圍,(此處的范圍指作用域),就會自動調(diào)用C++析構(gòu)函數(shù)。對此我還真有點懷疑,于是分別寫了C++與C#的代碼看一下情況是否真的是這樣。
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { test(); } static void test() { myPeople p = new myPeople(); Console.WriteLine("Complate"); } } class myPeople { public myPeople() { Console.WriteLine("Construct"); } ~myPeople() { Console.WriteLine("Dispose"); } } }
于是我分別在各個方法中插入斷點然后F5開始逐步調(diào)試,我發(fā)現(xiàn)沒有myPeople的調(diào)用是在test()方法執(zhí)行完畢后,Main()方法結(jié)束執(zhí)行器調(diào)用的。再看C++
#include<iostream> #include<string> using namespace std; class myPeople { public : myPeople() { cout<<"Construct"<<std::endl; } ~myPeople() { cout<<"Dispose"<<std::endl; } }; void myMethod() { myPeople my;; cout<<"Complate"<<std::endl; } int main() { myMethod(); }
通過上面的執(zhí)行過程就會發(fā)現(xiàn)確實如同本質(zhì)論作者說的那樣,C#調(diào)用終結(jié)器與C++析構(gòu)函數(shù)區(qū)別是相當(dāng)大的。C#清理一個類的資源并不是確定的,而C++類資源的釋放是該類超出作用域之后便開始調(diào)用析構(gòu)函數(shù)。
以上就是C++中如何使用析構(gòu)函數(shù),小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
網(wǎng)站欄目:C++中如何使用析構(gòu)函數(shù)
鏈接分享:http://chinadenli.net/article14/gjesde.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、商城網(wǎng)站、網(wǎng)站設(shè)計公司、、手機網(wǎng)站建設(shè)、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)