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

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

Effective C++ 第二十八條 Avoid returning “handles” to object internal

2023-01-29 03:03 作者:九思519  | 我要投稿

避免返回 handles 指向?qū)ο髢?nèi)部成分

下面有一段代碼

我們?cè)谥暗膶W(xué)習(xí)中知道,以 by-reference 的方式傳遞用戶自定義類型效率總是比 by-value 高,所以這里函數(shù) value 采用 by- reference 的方式傳遞。但是也會(huì)導(dǎo)致一些問題。

我們?cè)诤瘮?shù)外部獲取了屬于 private 的 reference ,然后對(duì)其進(jìn)行修改,這樣我們就破壞了 test 的封裝性。所以為了避免封裝性降低,我們不能讓返回一個(gè) non-const 的 reference。

就算是這樣,也有可能導(dǎo)致其他錯(cuò)誤。

當(dāng)我們采用 by-value 的方式返回一個(gè) test 的時(shí)候,返回的結(jié)果是一個(gè)臨時(shí)變量 temp,在函數(shù) getATest 結(jié)束的時(shí)候,temp 就已經(jīng)被銷毀,但是 ptr 指向 temp.value(),指向一個(gè)被銷毀的臨時(shí)變量,也就會(huì)導(dǎo)致錯(cuò)誤。所以即使是返回 private 成員的 const reference ?也依舊會(huì)導(dǎo)致錯(cuò)誤。這種情況稱為 虛吊(dangling handles)。

handles 包括引用、指針和迭代器。在寫一個(gè)類的時(shí)候,盡量不要返回指向內(nèi)部部分的 handles,內(nèi)部成分不僅包括 private/protected 修飾的成員變量還有成員函數(shù)。但這不是絕對(duì),有時(shí)候難以避免。比如 string 的 operator [],對(duì)于這種難以避免返回指向內(nèi)部的 handles。

總結(jié):

避免返回指向內(nèi)部成分的 handles,遵守這一點(diǎn)即可增強(qiáng)封裝性,幫助 const 成員函數(shù)的行為像一個(gè) const,并將發(fā)生 “dangling handles” 的可能性降低。


Effective C++ 第二十八條 Avoid returning “handles” to object internal的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
北安市| 渝北区| 临汾市| 庆阳市| 资中县| 雷州市| 平山县| 博兴县| 金昌市| 黔西县| 衡山县| 南京市| 平顺县| 环江| 赫章县| 赤城县| 奎屯市| 宾阳县| 于都县| 锡林郭勒盟| 山西省| 绥阳县| 乐陵市| 阳新县| 土默特右旗| 张家川| 封丘县| 五峰| 星子县| 虹口区| 当雄县| 将乐县| 千阳县| 渑池县| 久治县| 乌兰浩特市| 天峻县| 云霄县| 时尚| 兰溪市| 博罗县|