C++何時呼叫建構函式,何時呼叫解構函式
前言:
最近自考C++刷題的時候快被建構函式和解構函式搞得瘋掉了,現在特意寫一篇部落格來記錄自己的收穫!
在我們建立新的物件的時候,都要執行某一個類中的建構函式,而當建構函式中分配了資源之後,當我們銷燬一個物件的時候需要一個相應的操作將這些資源釋放出去,這就需要解構函式。
一般來說,在有基類和派生類存在時,在建立派生類型別時,會先構造基類,再構造派生類,析構順序反之,類似於進棧出棧的過程,但是當基類設定為“虛基類”的時候,只會呼叫當前的建構函式和解構函式。
遇到的情況:
指標不會呼叫構造和解構函式:
當對指標用new在記憶體中開闢空間的時候會呼叫建構函式:
當我們使用new為指標開闢空間,然後用delete釋放掉空間會呼叫構造和解構函式:
當我們函式的形參是一個物件的時候,這時候會系統只會呼叫解構函式,而缺少形參的建構函式:
當形參為一個物件的時候,實參也為物件,這時候系統會將實參複製一份給形參,此時系統就不會再給形參額外呼叫建構函式來對形參物件初始化了,所以就不會呼叫建構函式,但是形參被銷燬的時候還是會呼叫解構函式!
當我們函式的形參是一個引用的時候,這時候會系統不呼叫建構函式和解構函式:
當形參為一個引用的時候,實參也物件,這時候系統會將形參指向實參,此時系統就不會對形參呼叫建構函式和解構函式!
總結:
我感覺建構函式存在的目的就是為了給物件在記憶體中開闢空間並且給物件設定一些初始值,而解構函式就是將某個物件從記憶體中抹除,而設定的,經典的例子就是上邊的指標的例子,以上就是我的一些感想,歡迎小夥伴們在留言區寫出自己的疑惑,我很高興和大家分享