C 物件的生命週期 一

2021-09-19 16:23:16 字數 1800 閱讀 3375

c++和c的不同點之一在於c++通過類來定義物件,那麼物件何時產生,是否需要釋放呢???本篇文章將會針對物件的生命週期做出詳細介紹。

關於物件的生命週期,我們需要了解類的建構函式,析構函式,拷貝建構函式,賦值運算子過載函式等等。(具體可以參照我的博文

首先我們給出以下**:

#includeusing namespace std;

class test

test t5(90,90);

執行結果:

test(int)                      //普通構造t1

test(int) //普通構造t5

test(int) //普通構造t2

test(const test&) //t2拷貝構造t3

test(int) //普通構造t4

test(int) //普通構造臨時物件

operator= //臨時物件賦值t2

~test() //析構臨時物件

test(int) //普通構造臨時物件

operator= //臨時物件賦值t2

~test() //析構臨時物件

test(int) //普通構造臨時物件(隱式生成)

operator= //臨時物件賦值t2

~test() //析構臨時物件

test(int) //普通構造p1指向的無名物件

test(int) //普通構造p2指向的無名物件

test(int) //普通構造p2指向的無名物件

test(int) //普通構造臨時物件

~test() //析構臨時物件

test(int) //普通構造臨時物件

~test() //析構p1指向的無名物件

~test() //析構p2指向的無名物件

~test() //析構p2指向的無名物件

~test() //析構p4指向的無名物件

~test() //析構t3

~test() //析構t2

~test() //析構t4

~test() //析構t5

~test() //析構t1

我們對上面**及其執行結果進行分析,可的如下結論:

擴充套件:

c 物件的生命週期

c 的new 運運算元和c 的malloc 函式都是為了配置記憶體,但前者比之後者的優點 是,new 不但配置物件所需的記憶體空間時,同時會引發構造式的執行。所謂構造式 constructor 就是物件誕生後第乙個執行 並且是自動執行 的函式,它 的函式名稱必定要與類別名稱相同。相對於構造式,自然就...

c 物件的生命週期

c 的new 運運算元和c 的malloc 函式都是為了配置記憶體,但前者比之後者的優點 是,new 不但配置物件所需的記憶體空間時,同時會引發構造式的執行。所謂構造式 constructor 就是物件誕生後第乙個執行 並且是自動執行 的函式,它 的函式名稱必定要與類別名稱相同。相對於構造式,自然就...

物件的生命週期

全域性物件的引用 雖然在c 不允許,但是cil的確允許分配全域性物件 靜態物件 靜態欄位的引用 應用程式的 庫的區域性物件的引用 傳遞進乙個方法的物件引數的引用 等待被終結的物件的引用 任何引用物件的cpu暫存器 要尋找不可達的物件,如果clr逐個檢查託管堆的沒乙個物件,很明顯,效率很低。每個物件都...