日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
C++析構(gòu)函數(shù)不同使用方式

C++編程語(yǔ)言可以被看做是C語(yǔ)言的升級(jí)版本,它的許多應(yīng)用方法都與其他編程語(yǔ)言有相似之處。不過(guò)在一些特定的使用方法中,還是有些不同的應(yīng)用方式。在這里我們就先來(lái)了解一下C++析構(gòu)函數(shù)的一些特殊應(yīng)用方式。

C#中的終結(jié)器(也就是析構(gòu)函數(shù))類似于C++析構(gòu)函數(shù),但是由于編譯時(shí)無(wú)法確定終結(jié)器的執(zhí)行時(shí)機(jī),因此兩者實(shí)際上存在相當(dāng)大的區(qū)別。垃圾回收器調(diào)用C#終結(jié)器的時(shí)機(jī)是在對(duì)象上一次使用之后,但是在應(yīng)用程序關(guān)閉之前的某個(gè)時(shí)間。相反,只要一個(gè)對(duì)象(而非指針)超出范圍,(此處的范圍指作用域),就會(huì)自動(dòng)調(diào)用C++析構(gòu)函數(shù)。對(duì)此我還真有點(diǎn)懷疑,于是分別寫(xiě)了C++與C#的代碼看一下情況是否真的是這樣。

 
 
 
  1. using System;  
  2. using System.Collections.Generic;  
  3. using System.Linq;  
  4. using System.Text;  
  5. namespace ConsoleApplication1  
  6. {  
  7. class Program  
  8. {  
  9. static void Main(string[] args)  
  10. {  
  11. test();  
  12. }  
  13. static void test()  
  14. {  
  15. myPeople p = new myPeople();  
  16. Console.WriteLine("Complate");  
  17. }  
  18. }  
  19. class myPeople  
  20. {  
  21. public myPeople()  
  22. {  
  23. Console.WriteLine("Construct");  
  24. }  
  25. ~myPeople()  
  26. {  
  27. Console.WriteLine("Dispose");  
  28. }  
  29. }  

于是我分別在各個(gè)方法中插入斷點(diǎn)然后F5開(kāi)始逐步調(diào)試,我發(fā)現(xiàn)沒(méi)有myPeople的調(diào)用是在test()方法執(zhí)行完畢后,Main()方法結(jié)束執(zhí)行器調(diào)用的。再看C++

 
 
 
  1. #include 
  2. #include 
  3. using namespace std;  
  4. class myPeople  
  5. {  
  6. public :  
  7. myPeople()  
  8. {  
  9. cout<<"Construct"<
  10. }  
  11. ~myPeople()  
  12. {  
  13. cout<<"Dispose"<
  14. }  
  15. };  
  16. void myMethod()  
  17. {  
  18. myPeople my;;  
  19. cout<<"Complate"<
  20. }  
  21. int main()  
  22. {  
  23. myMethod();  

通過(guò)上面的執(zhí)行過(guò)程就會(huì)發(fā)現(xiàn)確實(shí)如同本質(zhì)論作者說(shuō)的那樣,C#調(diào)用終結(jié)器與C++析構(gòu)函數(shù)區(qū)別是相當(dāng)大的。C#清理一個(gè)類的資源并不是確定的,而C++類資源的釋放是該類超出作用域之后便開(kāi)始調(diào)用析構(gòu)函數(shù)。

【編輯推薦】

  1. C++ delete具體用法簡(jiǎn)述
  2. C++二維數(shù)組new幾種應(yīng)用方法點(diǎn)評(píng)
  3. C++回調(diào)函數(shù)代碼示例解讀
  4. C++迭代器基本內(nèi)容講述
  5. C++淺拷貝具體內(nèi)容講述

當(dāng)前名稱:C++析構(gòu)函數(shù)不同使用方式
文章路徑:http://www.dlmjj.cn/article/cdeocii.html