久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

c++中類的默認(rèn)構(gòu)造函數(shù),,析構(gòu)函數(shù),拷貝構(gòu)造函數(shù)

 clhon 2011-04-13

1.默認(rèn)構(gòu)造函數(shù)

如果沒有顯示的為類聲明構(gòu)造函數(shù),,編譯器將生成一個(gè)不接受任何參數(shù),。也不執(zhí)行任何操作的默認(rèn)構(gòu)造函數(shù)。然而你可以創(chuàng)建自己的默認(rèn)構(gòu)造函數(shù),,它不接受任何參數(shù),,但根據(jù)需要對(duì)對(duì)象進(jìn)行設(shè)置。

編譯器提供的構(gòu)造函數(shù)被稱為默認(rèn)構(gòu)造函數(shù),,但按照慣例,,任何不接受參數(shù)的構(gòu)造函數(shù)都是默認(rèn)構(gòu)造函數(shù)。如果你創(chuàng)建了任何構(gòu)造函數(shù),,編譯器不會(huì)提供構(gòu)造函數(shù),。因此,如果需要一個(gè)不接受任何參數(shù)的構(gòu)造函數(shù),,切已經(jīng)創(chuàng)建了其他構(gòu)造函數(shù),,則必須自己添加默認(rèn)構(gòu)造函數(shù)。

默認(rèn)構(gòu)造函數(shù)不會(huì)為數(shù)據(jù)成員提供初始值,,也就是不會(huì)把數(shù)據(jù)成員初始化為0或者NULL,。

2. 析構(gòu)函數(shù)

析構(gòu)函數(shù)在對(duì)象被銷毀后完成清理工作并釋放(在構(gòu)造函數(shù)或?qū)ο蟮纳芷谥校┓峙涞馁Y源或內(nèi)存。析構(gòu)函數(shù)總是與類同名,,但在前面加上一個(gè)~,。析構(gòu)函數(shù)沒有參數(shù)也沒有返回值,所以一個(gè)類只能有一個(gè)析構(gòu)函數(shù),。

3. 默認(rèn)拷貝構(gòu)造函數(shù)

除提供默認(rèn)構(gòu)造函數(shù)和析構(gòu)函數(shù)外,,編譯器還提供一個(gè)默認(rèn)拷貝構(gòu)造函數(shù)。每當(dāng)創(chuàng)建對(duì)象的拷貝時(shí),,都將調(diào)用拷貝構(gòu)造函數(shù),。

所有拷貝構(gòu)造函數(shù)都接受一個(gè)參數(shù):指向其所屬類的對(duì)象的引用。將該引用聲明為const是個(gè)好主意,,因?yàn)榭截悩?gòu)造函數(shù)不會(huì)修改傳入的對(duì)象,。例如:

cat(const cat & cat);

cat構(gòu)造函數(shù)接受一個(gè)指向cat對(duì)象的const引用。該賦值構(gòu)造函數(shù)旨在創(chuàng)建一個(gè)thecat拷貝,。

默認(rèn)拷貝構(gòu)造函數(shù)將作為參數(shù)傳入的對(duì)象的每個(gè)成員變量復(fù)制到新對(duì)象的成員變量中,。這被稱為成員拷貝(淺拷貝),這雖然對(duì)大多數(shù)成員變量來說是可行的,但對(duì)于指向自由存儲(chǔ)區(qū)中的對(duì)象的指針成員變量不可行,。

成員淺拷貝只是將對(duì)象成員變量的值復(fù)制到另一個(gè)對(duì)象中,,兩個(gè)對(duì)象中的指針最后將指向同一個(gè)內(nèi)存塊。深拷貝將在堆中分配的值復(fù)制到新分配的內(nèi)存中,。

如果cat類中包含一個(gè)成員變量*itsage,,它是一個(gè)指向自由存儲(chǔ)區(qū)中的int變量指針,默認(rèn)拷貝構(gòu)造函數(shù)將傳入的cat對(duì)象的itsage成員變量的值,,拷貝到新的cat對(duì)象的itsage成員變量中,。這兩個(gè)成員變量指向同一個(gè)內(nèi)存塊。當(dāng)其中任何一個(gè)cat對(duì)象不再在作用域中時(shí),,浙江導(dǎo)致災(zāi)難性后果,。如果原始的cat對(duì)象的析構(gòu)函數(shù)釋放了這塊內(nèi)存,而新的cat對(duì)象仍指向該內(nèi)存塊,,將生成一個(gè)迷途指針,,程序?qū)⑻幱谥旅奈kU(xiǎn)之中。

解決這種問題的方法是,,創(chuàng)建自己的拷貝構(gòu)造函數(shù)并根據(jù)需要分配內(nèi)存,。分配內(nèi)存后,便可以將原來的值復(fù)制到新內(nèi)存中,,這被稱為深拷貝,。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多