C++對(duì)象創(chuàng)建與銷毀
有一個(gè)類 Entity

每個(gè)類都有一個(gè)默認(rèn)的構(gòu)造函數(shù)和析構(gòu)函數(shù)(即使你沒有自行去定義它們),在創(chuàng)建對(duì)象時(shí)自動(dòng)調(diào)用構(gòu)造函數(shù),在銷毀對(duì)象時(shí)自動(dòng)調(diào)用析構(gòu)函數(shù)。他們通常是不用顯式調(diào)用的。

這段代碼為Entity類分別定義了一個(gè)構(gòu)造函數(shù)和析構(gòu)函數(shù)。
我們可以使用Entity a;來創(chuàng)建一個(gè)名為a的Entity對(duì)象
語法:類名?對(duì)象名稱;

每個(gè)對(duì)象將會(huì)在作用域結(jié)束后自動(dòng)銷毀,也就是說在main函數(shù)執(zhí)行完后將會(huì)調(diào)用析構(gòu)函數(shù)進(jìn)行銷毀,運(yùn)行以下代碼。


會(huì)發(fā)現(xiàn)只輸出了關(guān)于創(chuàng)建的而沒有銷毀,回車后將會(huì)輸出銷毀。
以上是在棧中創(chuàng)建對(duì)象,它的釋放由系統(tǒng)決定,
在堆里面創(chuàng)建對(duì)象可以在出作用域后對(duì)象依然存在,它的釋放由自行決定,在堆中創(chuàng)建對(duì)象的例子:
語法: 類名 *對(duì)象名稱 = new 類名;
這樣將會(huì)在堆中創(chuàng)建一個(gè)對(duì)象a


要想銷毀它需要使用delete釋放它
語法:delete?類名;


注:如果不去釋放掉堆中創(chuàng)建的對(duì)象,那么將可能造成內(nèi)存泄漏(堆中創(chuàng)建的對(duì)象只要你不去釋放它,它將會(huì)一直存在)
棧對(duì)象:釋放由系統(tǒng)決定,生命周期短,自由度低
堆對(duì)象:釋放自行決定,生命周期長(zhǎng),自由度高