構(gòu)造函數(shù)什么時(shí)候被調(diào)用 C 中,構(gòu)造函數(shù)和析構(gòu)函數(shù)能不能被顯示調(diào)用?
C 中,構(gòu)造函數(shù)和析構(gòu)函數(shù)能不能被顯示調(diào)用?回答是不能。構(gòu)造函數(shù)和析構(gòu)函數(shù)都是編譯器生成調(diào)用代碼C 中構(gòu)造函數(shù)和析構(gòu)函數(shù)能不能被顯示調(diào)用?1、 C 中, 構(gòu)造函數(shù)和析構(gòu)函數(shù)可以被顯示調(diào)用.
C 中,構(gòu)造函數(shù)和析構(gòu)函數(shù)能不能被顯示調(diào)用?
回答是不能。
構(gòu)造函數(shù)和析構(gòu)函數(shù)都是編譯器生成調(diào)用代碼C 中構(gòu)造函數(shù)和析構(gòu)函數(shù)能不能被顯示調(diào)用?
1、 C 中, 構(gòu)造函數(shù)和析構(gòu)函數(shù)可以被顯示調(diào)用. 顯示調(diào)用默認(rèn)構(gòu)造函數(shù)的語(yǔ)法: a.A::A()(不能寫(xiě)成a.A()) , 顯示調(diào)用非默認(rèn)構(gòu)造函數(shù)的語(yǔ)法: a.A::A(7)(不能寫(xiě)成a.A(7)) 顯示調(diào)用析構(gòu)函數(shù)的語(yǔ)法: a.A::~A()(可以寫(xiě)成a.~A()) .
2、 顯示調(diào)用構(gòu)造函數(shù)和析構(gòu)函數(shù)就像調(diào)用一般的函數(shù)一樣, 并不意味著創(chuàng)建或銷(xiāo)毀對(duì)象
3、 如果構(gòu)造函數(shù)中動(dòng)態(tài)分配了空間, 則顯示調(diào)用構(gòu)造函數(shù)會(huì)造成內(nèi)存泄露. 創(chuàng)建對(duì)象時(shí)的隱式構(gòu)造函數(shù)調(diào)用已經(jīng)為對(duì)象分配了動(dòng)態(tài)內(nèi)存,當(dāng)用創(chuàng)建好的對(duì)象顯示調(diào)用構(gòu)造函數(shù)時(shí), 對(duì)象指向的動(dòng)態(tài)內(nèi)存更新為顯示調(diào)用時(shí)所分配的, 對(duì)象生命周期結(jié)束時(shí)析構(gòu)函數(shù)所釋放掉的是后一次分配的動(dòng)態(tài)內(nèi)存, 也就是說(shuō)創(chuàng)建對(duì)象時(shí)隱式構(gòu)造函數(shù)調(diào)用所分配的那塊內(nèi)存泄漏了.
4、 如果析構(gòu)函數(shù)中釋放動(dòng)態(tài)分配的空間, 則會(huì)造成多次釋放同一內(nèi)存, 會(huì)出現(xiàn)嚴(yán)重錯(cuò)誤.
#include