五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Effective C++ 第五條 Know what functions C++ silently writes and ca

2023-01-09 00:49 作者:九思519  | 我要投稿


當(dāng)你創(chuàng)建一個(gè)類(哪怕是空類),C++會(huì)為你創(chuàng)建三個(gè)默認(rèn)函數(shù),構(gòu)造函數(shù)、拷貝構(gòu)造函數(shù)、析構(gòu)函數(shù),這些函數(shù)都是public且inline的,只有當(dāng)這些函數(shù)被調(diào)用才會(huì)被編譯器創(chuàng)建出來。

這里有個(gè)要點(diǎn)需要注意,編譯器自動(dòng)產(chǎn)生的拷貝構(gòu)造函數(shù)可能會(huì)引發(fā)內(nèi)存泄漏(深拷貝淺拷貝),例子如下

如果按照這些執(zhí)行,代碼會(huì)報(bào)錯(cuò),原因是編譯器的默認(rèn)拷貝構(gòu)造函數(shù)是淺拷貝,也就是a2中的p并不是獨(dú)立于a1中的p,而是a1.p和a2.p指向同一個(gè)位置,當(dāng)這個(gè)位置被a1的析構(gòu)函數(shù)釋放掉之后,這塊內(nèi)存也就被釋放了,但是a2.p仍然指向這個(gè)位置,這就導(dǎo)致a2的析構(gòu)函數(shù)會(huì)再一次釋放這一塊內(nèi)存,從而導(dǎo)致錯(cuò)誤。解決方案應(yīng)該如下

有的時(shí)候我們不希望有些對(duì)象被拷貝,比如有一個(gè)類是人(Person),我們聲明一個(gè)p,但是我們知道世界上不可能有兩個(gè)一摸一樣的人,所以不允許對(duì)p進(jìn)行拷貝構(gòu)造,這個(gè)時(shí)候我們需要手動(dòng)的將拷貝構(gòu)造函數(shù)在private下聲明,這樣就不允許外部顯式的調(diào)用拷貝構(gòu)造函數(shù),從而不能進(jìn)行拷貝。

但謹(jǐn)記,不要將構(gòu)造函數(shù)和析構(gòu)函數(shù)放入private下,這樣會(huì)導(dǎo)致類無法創(chuàng)建或者創(chuàng)建后出錯(cuò)。

Effective C++ 第五條 Know what functions C++ silently writes and ca的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
穆棱市| 盐源县| 广南县| 巴彦淖尔市| 博野县| 常宁市| 修武县| 鹤壁市| 沧源| 丹寨县| 嘉义县| 海林市| 格尔木市| 平和县| 定陶县| 乌苏市| 菏泽市| 怀宁县| 千阳县| 祁东县| 泰宁县| 濉溪县| 绥滨县| 景泰县| 寻乌县| 徐州市| 麟游县| 滨州市| 宁河县| 天水市| 保康县| 新沂市| 出国| 顺昌县| 松溪县| 盐池县| 渝中区| 广南县| 新巴尔虎右旗| 徐州市| 兴和县|