物件的生存週期

2021-08-18 22:52:27 字數 695 閱讀 3349

在學習析構函式時,了解到一般物件的銷毀是在main函式內return之後。

在棧上構造的物件要符合棧的先進後出的規則。

堆上new的物件需要遇到delete的時候才能銷毀,否則會出現記憶體洩漏。

所以一般的物件生存週期為定義點開始,return之後main函式退出之前結束。

對於特殊的物件,總結如下:

1、全域性物件:全域性物件(不論是靜態還是非靜態)會在編譯期間先構造出來(不論它的**在main上面還是下面)。所以全域性物件的生存週期是定義點開始,main函式退出前結束。

2、靜態的區域性物件:靜態區域性物件的生命週期是從定義點開始,main函式退出前結束。但是靜態區域性物件的銷毀是在區域性物件銷毀之後,全域性物件銷毀之前。

3、生成的臨時物件:臨時物件的生存週期非常短,在物件生成點開始遇到   ,?;  就結束。

這裡有個特殊的:引用會提公升臨時物件的生存週期,提公升到和引用一樣的生存週期。

物件生存週期

假設有乙個cgoods類 1 cgoods s1 huotui 1 用 huotui 構造乙個臨時物件 2 用該臨時物件拷貝構造s1 3 析構該臨時物件 以上三步可以優化為 用 huotui 直接構造s1 2 s1 rou 1 用 rou 構造乙個臨時物件 2 用該臨時物件給s1賦值 3 析構該臨時...

c 類物件的生存週期

在這裡我們會通過乙個例子來給大家解釋說明 include using namespace std class test public test int a 5,int b 5 ma a mb b cout 1 因為物件t1處於全域性中,所以t1最先被構造,呼叫建構函式 2 由於物件t5 也處於全域性...

C 中物件的生存週期

在c中有變數的生存週期,那麼在c 中就有物件的生存週期。1 普通物件的生存週期 若有乙個cobject類,屬性是姓名和年齡。cobject gobject1 int main cobject gobject2 函式呼叫的先後順序是 建構函式 gobject1 gobject2 object1 obj...