主要區別
建構函式被定義為程式語言中用於結構或類的獨佔方法,該方法有助於為同一型別的項提供初始值。另一方面,解構函式被定義為用於銷燬連續執行的程式的獨佔方法。
比較圖
什麼是建造師(c***tructor)?
建構函式被定義為程式語言中用於結構或類的獨佔方法,該方法有助於為同一型別的項提供初始值。無論何時,只要我們使用的類的名稱相同,或者為物件的成員提供可能保持使用者定義或預設值的值,這個術語就變得非常有用。建構函式看起來像是一個示例策略;但是,它與一種技術的不同之處在於它沒有明確的返回排序,它不可驗證地獲得,並且在很大程度上,它有各種程度修飾符的標準。建構函式通常與宣告類同名。他們的任務是確定問題的資訊個體,並設定類的不變數,如果不變數無效,則不變數就不攻自破了。一個適當組成的構造器將隨後的**留在一個合法的狀態。永久項必須處於建構函式中的狀態。可以使用任何getto修飾符來宣告建構函式。儘管如此,如果get-to修飾符在類中沒有特徵化,編譯器將提供一個預設值。在建構函式被宣佈為私有的情況下,類不能被建立或確定,因此不能被例項化。這種方法的一部分主要工作包括邏輯,包括在應用程式中的特定場合執行的操作,例如,開啟一個數據庫關聯,它不應該在構造器中組成。同樣,在使用推斷類建構函式時,應該向父類建構函式傳遞正確的引數。
什麼是解構函式(destructor)?
解構函式被定義為用於銷燬連續執行的程式的獨佔方法。此操作涉及的一些主要步驟包括堆空間恢復過程、物件生命週期內分配的空間、關閉檔案、編輯資料庫連線以及釋放網路資源。當它的生命週期被繫結到一個作用域,而執行離開了程度,當它被安裝在生命週期結束的另一個問題中,或者當它被逐步分發並明確釋放時,它就可能發生。它存在的主要原因是釋放資源,例如,記憶體分配、開啟的文件或附件、資料庫關聯、資產鎖等等,這些都是透過問題在其生命週期中獲得的,以及從可能保留對它的引用的不同物質的登出。解構函式在C++中被明確呼叫。無論如何,在C和Java中,情況並非如此,因為分配給專案的記憶體的指定和到達確實由城市工作者負責。雖然C和Java中的解構函式是不確定的,但C解構函式是由.NET網站執行時。在任何情況下,Java終結器都必須明確地被呼叫,因為它們的變戲法無法保證。這個合併所執行的主要活動的一部分;自動變址,客戶端程式碼沒有明確的呼叫,負載過重或遺留不允許,獲取修飾符或引數不確定,對get類中解構函式的呼叫請求是從最推斷到最輕微推斷的。
主要區別
- 建構函式被定義為程式語言中用於結構或類的獨佔方法,該方法有助於為同一型別的項提供初始值。另一方面,解構函式被定義為用於銷燬連續執行的程式的獨佔方法。
- 建構函式是一種獨特的能力,在類出現問題時,它會被呼叫。另一方面,解構函式是一個非常特殊的位置,當類問題被刪除或離開作用域時,它會自然地被呼叫。
- 建構函式的主要任務是為新增的項分配記憶體。另一方面,解構函式的主要任務是完成分配給物件的記憶體。
- 建構函式具有接受在結構外部新增的不同引數的特性,另一方面,解構函式不接受任何此類引數。
- 每當我們建立一個新物件時,建構函式就會被自動呼叫。相反,每當一個被呼叫的程式被啟用時,它就會自動終止。
- 建構函式總是以連續的順序存在,因此具有相同的名稱。另一方面,解構函式總是以相反的順序被呼叫,因此得到相反的名稱。