五月天青色头像情侣网名,国产亚洲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ó)家法律
南漳县| 内乡县| 北川| 凉山| 新沂市| 中牟县| 如皋市| 时尚| 湄潭县| 都匀市| 樟树市| 城固县| 满洲里市| 陇川县| 衡阳市| 同德县| 登封市| 宣化县| 新竹市| 上犹县| 昌都县| 西青区| 镇康县| 晋中市| 右玉县| 海门市| 通渭县| 祥云县| 德钦县| 清苑县| 台中市| 长泰县| 南溪县| 梁山县| 栾川县| 峨眉山市| 安平县| 湖南省| 郯城县| 富裕县| 乌拉特中旗|