国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費(fèi)電子書(shū)等14項(xiàng)超值服

開(kāi)通VIP
c++中類(lèi)的默認(rèn)構(gòu)造函數(shù),析構(gòu)函數(shù),拷貝構(gòu)造函數(shù)

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

如果沒(méi)有顯示的為類(lèi)聲明構(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ì)象被銷(xiāo)毀后完成清理工作并釋放(在構(gòu)造函數(shù)或?qū)ο蟮纳芷谥校┓峙涞馁Y源或內(nèi)存。析構(gòu)函數(shù)總是與類(lèi)同名,但在前面加上一個(gè)~。析構(gòu)函數(shù)沒(méi)有參數(shù)也沒(méi)有返回值,所以一個(gè)類(lèi)只能有一個(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ù):指向其所屬類(lèi)的對(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ù)成員變量來(lái)說(shuō)是可行的,但對(duì)于指向自由存儲(chǔ)區(qū)中的對(duì)象的指針成員變量不可行。

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

如果cat類(lèi)中包含一個(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)之中。

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

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
linux C/C++服務(wù)器后臺(tái)開(kāi)發(fā)面試題總結(jié)
C/C++常見(jiàn)面試題[轉(zhuǎn)帖]
C 拷貝構(gòu)造函數(shù)詳解
Symbian手記【一】 —— Symbian命名法
C++拷貝構(gòu)造函數(shù)與賦值函數(shù)【整理】
c 三五法則(適合學(xué)完一遍不怎么清楚的童鞋)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服