自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

C++析構(gòu)函數(shù)不同使用方式

開發(fā) 后端
雖然說C#中的終結(jié)器與C++析構(gòu)函數(shù)向類似,但是在實際使用后,我們會發(fā)現(xiàn),他們之間的差別還是相當(dāng)大的。我們在這里會為大家一一講述。

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

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

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

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

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

【編輯推薦】

  1. C++ delete具體用法簡述
  2. C++二維數(shù)組new幾種應(yīng)用方法點評
  3. C++回調(diào)函數(shù)代碼示例解讀
  4. C++迭代器基本內(nèi)容講述
  5. C++淺拷貝具體內(nèi)容講述
責(zé)任編輯:曹凱 來源: 博客園
相關(guān)推薦

2025-02-18 00:08:00

代碼C++RAII

2010-01-18 15:53:27

C++析構(gòu)函數(shù)

2011-07-15 01:29:39

C++析構(gòu)函數(shù)

2010-01-20 14:25:56

函數(shù)調(diào)用

2024-12-19 14:42:15

C++內(nèi)存泄漏內(nèi)存管理

2010-02-05 13:35:19

C++虛析構(gòu)函數(shù)

2009-08-14 17:24:28

C#構(gòu)造函數(shù)和析構(gòu)函數(shù)

2009-09-03 13:14:55

C#構(gòu)造函數(shù)C#析構(gòu)函數(shù)

2009-07-30 15:24:13

C#析構(gòu)函數(shù)C#構(gòu)造函數(shù)

2021-12-11 19:02:03

函數(shù)C++對象

2011-06-15 09:47:14

C++

2025-04-11 07:50:00

虛析構(gòu)函數(shù)C++開發(fā)

2024-12-11 16:00:00

C++函數(shù)編譯器

2010-02-02 17:39:31

C++構(gòu)造函數(shù)

2010-01-25 10:10:42

C++函數(shù)參數(shù)

2010-02-04 14:29:45

C++ typenam

2010-02-03 15:27:26

C++ static

2010-02-06 14:12:54

C++繼承方式

2009-09-02 10:49:46

C#調(diào)用析構(gòu)方法

2010-07-20 09:52:27

Perl構(gòu)造函數(shù)
點贊
收藏

51CTO技術(shù)棧公眾號