首頁  >  文章  >  後端開發  >  C 中的新實例化與非新實例化:主要差異是什麼?

C 中的新實例化與非新實例化:主要差異是什麼?

Linda Hamilton
Linda Hamilton原創
2024-11-24 06:35:11907瀏覽

New vs. Non-new Instantiation in C  : What are the Key Differences?

實例化差異:new 與非new

本題探討了使用new 運算子實例化物件與實例化物件之間的功能差異沒有新的。

非新的實例化

Time t(12, 0, 0); // t is a Time object

此實例化建立一個名為t 的Time 對象,該物件駐留在堆疊上(在大多數實作中)。它在當前範圍內保留其存在性。

new 實例化

Time *t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object

此實例化使用運算子 new() 動態分配內存,然後呼叫建構子 Time( )。分配的記憶體區塊的位址儲存在t中。 Time 物件駐留在堆上(通常)。後面程式中必須刪除t,以釋放分配的內存,防止內存洩漏。

功能差異

除了記憶體管理上有明顯差異外,沒有什麼區別兩個實例之間存在顯著的功能差異。這兩種方法都會使用指定的參數來建立 Time 類別的實例。

注意

術語「堆疊」和「堆」通常用於指示 Time 類別的儲存位置分別是堆疊分配和堆疊分配的物件。然而,C 標準並沒有根據記憶體位置強加這些差異。相反,它根據物件的儲存持續時間對物件進行分類,這可能與堆疊和堆的傳統概念一致,也可能不一致。

以上是C 中的新實例化與非新實例化:主要差異是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn