實例化物件:有或沒有New
在C中建立物件時,程式設計師可以使用「new」運算子或直接實例化它們沒有它。雖然這兩種方法都創建對象,但它們在幾個關鍵方面有所不同。
不帶 New
實例化一個不帶「new」的物件會直接在目前作用域中為其保留記憶體。這通常在堆疊上完成,並產生具有自動生命週期的物件。物件在其定義的範圍內自動建立和銷毀。
例如:
Time t(12, 0, 0); // t is a Time object
在上面的程式碼中,“Time”物件“t”是在堆疊上建立的,並且它的生命週期綁定到目前作用域。
With New
使用「new」實例化一個對象,在堆上為其動態分配記憶體。這允許在物件的生命週期結束時明確地建立和銷毀該物件。指標「t」儲存的是物件的堆疊位址。
例如:
Time* t = new Time(12, 0, 0); // t is a pointer to a dynamically allocated Time object
這裡,指針「t」被賦予了新建立的「Time」物件的堆疊位址。物件的生命週期與範圍無關,並且一直持續到使用「刪除」運算子釋放其記憶體為止。
主要差異
值得注意的是,這些差異是特定於實現的,因為 C 標準沒有明確定義堆疊和堆疊行為。然而,在大多數實際實作中,堆疊記憶體用於自動對象,而堆疊記憶體用於動態對象。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3