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

歡迎光臨散文網(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)遵守國家法律
尤溪县| 马尔康县| 文化| 福海县| 汉沽区| 鹤庆县| 牙克石市| 石门县| 淄博市| 龙州县| 龙陵县| 张家界市| 冷水江市| 平定县| 石首市| 齐河县| 杨浦区| 江口县| 昌都县| 阳信县| 西安市| 永州市| 时尚| 平泉县| 崇信县| 海兴县| 甘德县| 连南| 拜城县| 姚安县| 贵定县| 德格县| 太保市| 古浪县| 扶风县| 绥江县| 佛山市| 黄山市| 乐都县| 衡阳市| 商河县|