實例化物件:有或沒有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 標準沒有明確定義堆疊和堆疊行為。然而,在大多數實際實作中,堆疊記憶體用於自動對象,而堆疊記憶體用於動態對象。
以上是C 物件實例化:堆疊與堆疊:「new」還是不是「new」?的詳細內容。更多資訊請關注PHP中文網其他相關文章!