最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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ó)家法律
达州市| 尖扎县| 沧州市| 滦平县| 华池县| 西华县| 呼图壁县| 九寨沟县| 马公市| 恩施市| 鹤庆县| 循化| 正阳县| 舟曲县| 黄石市| 汉源县| 灵宝市| 莱州市| 灌阳县| 布拖县| 六盘水市| 永靖县| 宁津县| 淮北市| 农安县| 辽源市| 喀喇沁旗| 建湖县| 营口市| 天津市| 千阳县| 柳江县| 东乌珠穆沁旗| 临漳县| 平利县| 耒阳市| 德惠市| 灵璧县| 和田县| 迭部县| 长治县|