首頁 > 後端開發 > C++ > 'new”與非'new”物件實例化:主要功能差異是什麼?

'new”與非'new”物件實例化:主要功能差異是什麼?

Mary-Kate Olsen
發布: 2024-12-06 22:41:12
原創
752 人瀏覽過

`new` vs. Non-`new` Object Instantiation: What are the Key Functional Differences?

實例化物件:「new」與非「new」

除了記憶體分配之外,以下幾行之間還存在哪些功能差異代碼?

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

Time* t = new Time(12, 0, 0);//t is a pointer to a dynamically allocated Time object
登入後複製

非「新」實例化

第一行,Time t (12, 0, 0);,在本地範圍內建立Time 類型的變數t。該變數通常分配在堆疊上,並在其作用域結束時被銷毀。

'new'實例化

相反,第二行,Time* t = new Time(12, 0, 0);,(通常)透過:: operator new() 或Time::operator 在堆上分配一塊記憶體new() 函數。然後使用 Time::Time() 建構函數初始化該記憶體區塊,並將新分配的記憶體的位址設定為 this 指標。指向已分配記憶體的指標儲存在變數 t 中。

其他差異

雖然主要差異在於記憶體分配,但還有一些其他細微差別:

  • 生命週期:非「新」物件具有自動儲存期限,這意味著它們在作用域結束時會自動銷毀。另一方面,「新」物件具有動態儲存持續時間,必須明確刪除才能回收其記憶體。
  • 範圍:非「新」物件被定義並存在於其本地範圍內。 「新」物件在程式堆疊之外分配,且不限於任何特定範圍。
  • 所有權:「新」物件的記憶體必須明確管理,並且必須安全地取消引用相關指標。非“新”物件由編譯器自動管理,因此不需要明確記憶體清理。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板