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

歡迎光臨散文網(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)遵守國家法律
伊金霍洛旗| 平远县| 金堂县| 大埔区| 兴海县| 南阳市| 锡林浩特市| 饶河县| 永胜县| 镶黄旗| 临海市| 荥经县| 达日县| 元阳县| 通渭县| 宣武区| 内丘县| 乌拉特前旗| 敦煌市| 祥云县| 唐山市| 棋牌| 临城县| 津南区| 阿拉尔市| 洱源县| 建宁县| 凉山| 德惠市| 会昌县| 化州市| 安宁市| 德惠市| 怀柔区| 荥阳市| 拉萨市| 北碚区| 湟中县| 棋牌| 鲁甸县| 于田县|