實例化差異: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中文網其他相關文章!