析構(gòu)函數(shù)在什么情況下被調(diào)用 程序里面全局變量的構(gòu)造函數(shù)和析構(gòu)函數(shù)什么時(shí)候調(diào)用?
程序里面全局變量的構(gòu)造函數(shù)和析構(gòu)函數(shù)什么時(shí)候調(diào)用?在創(chuàng)建對(duì)象時(shí)調(diào)用構(gòu)造函數(shù),例如在主函數(shù)AA中聲明類classA{…}:在定義對(duì)象a時(shí),調(diào)用構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)是無參數(shù)的。構(gòu)造函數(shù)相當(dāng)于初始化對(duì)象a
程序里面全局變量的構(gòu)造函數(shù)和析構(gòu)函數(shù)什么時(shí)候調(diào)用?
在創(chuàng)建對(duì)象時(shí)調(diào)用構(gòu)造函數(shù),例如在主函數(shù)AA中聲明類classA{…}:在定義對(duì)象a時(shí),調(diào)用構(gòu)造函數(shù)。默認(rèn)構(gòu)造函數(shù)是無參數(shù)的。構(gòu)造函數(shù)相當(dāng)于初始化對(duì)象a,這相當(dāng)于在C語言中初始化inta=3的a的值。因?yàn)椴荒苤苯訉⒅蒂x給類中私有的類成員,所以依賴構(gòu)造函數(shù)。但是,您應(yīng)該注意參數(shù)化構(gòu)造和無參數(shù)構(gòu)造。默認(rèn)值是無參數(shù)的。例如,AA(1,3)是錯(cuò)誤的,除非您在類中使用參數(shù)編寫構(gòu)造函數(shù)。當(dāng)函數(shù)調(diào)用結(jié)束時(shí),析構(gòu)函數(shù)將被自動(dòng)調(diào)用,例如當(dāng)您在clsaaa{公共:添加()…},當(dāng)您AA;A.add()時(shí),您可以自動(dòng)調(diào)用解構(gòu)。。。}在調(diào)用a.add()之后,您會(huì)發(fā)現(xiàn)在析構(gòu)函數(shù)中編寫的內(nèi)容會(huì)被自動(dòng)調(diào)用。析構(gòu)函數(shù)的功能是釋放對(duì)象占用的資源。默認(rèn)的析構(gòu)函數(shù)不打印任何內(nèi)容,因此您不會(huì)直接看到何時(shí)執(zhí)行析構(gòu)函數(shù)。當(dāng)您將打印語言添加到析構(gòu)函數(shù)時(shí),您將看到它。希望能對(duì)您有所幫助
不同存儲(chǔ)類型的對(duì)象調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)的方式不同
1。對(duì)于全局定義的對(duì)象(在函數(shù)外部定義的對(duì)象),在程序執(zhí)行開始時(shí)調(diào)用構(gòu)造函數(shù);在程序執(zhí)行結(jié)束時(shí)調(diào)用析構(gòu)函數(shù)。
2. 對(duì)于本地定義的對(duì)象(函數(shù)中定義的對(duì)象),當(dāng)程序執(zhí)行到定義對(duì)象的位置時(shí),調(diào)用構(gòu)造函數(shù);當(dāng)對(duì)象超出范圍時(shí),調(diào)用析構(gòu)函數(shù)。
3. 對(duì)于由static定義的局部對(duì)象,當(dāng)它第一次到達(dá)對(duì)象的定義時(shí)調(diào)用構(gòu)造函數(shù),在程序結(jié)束時(shí)調(diào)用析構(gòu)函數(shù)
4。對(duì)于new操作符動(dòng)態(tài)生成的對(duì)象,在生成對(duì)象時(shí)調(diào)用構(gòu)造函數(shù),只有使用delete操作符釋放對(duì)象時(shí)才調(diào)用析構(gòu)函數(shù)。如果不使用delete撤消動(dòng)態(tài)生成的對(duì)象,則該對(duì)象仍然存在于程序的末尾并占用相應(yīng)的存儲(chǔ)空間,即系統(tǒng)不能自動(dòng)調(diào)用析構(gòu)函數(shù)撤消動(dòng)態(tài)生成的對(duì)象。
程序中途退出會(huì)不會(huì)調(diào)用析構(gòu)函數(shù)?
生成對(duì)象時(shí)會(huì)調(diào)用構(gòu)造函數(shù)??梢远x或新分配。調(diào)用哪個(gè)構(gòu)造函數(shù)取決于構(gòu)造參數(shù)。如果構(gòu)造參數(shù)是同一類型的另一個(gè)對(duì)象,則它是一個(gè)復(fù)制構(gòu)造函數(shù)。如果沒有參數(shù),則為無參數(shù)或默認(rèn)構(gòu)造。析構(gòu)函數(shù)在對(duì)象生命周期結(jié)束時(shí)被調(diào)用,也就是說,當(dāng)它被釋放時(shí),新對(duì)象將在刪除和離開作用域時(shí)調(diào)用局部變量。程序退出時(shí)將調(diào)用全局變量和靜態(tài)局部變量