在這里首先要明確啥是handles轻要,這里所說的handles就是通常所說的引用匣砖、指針或者迭代器等具有指代性質(zhì)的標簽。那么題目所說的意思就是你返回的那個handles不要涉及對象內(nèi)部的東西奉件。
在敘述此原則的過程中作者舉了一個矩形Rectangular的例子突委,說舉行的四個頂點存儲在一個結(jié)構(gòu)體中,Rectangular提供了兩個公有接口upperleft和lowerright它們返回的是該矩形左上角和右下角的頂點的坐標結(jié)構(gòu)體省容,并且是以引用的形式返回的。因為用戶只需知道這些頂點的坐標而無需對這些頂點進行操作燎字,因此這倆接口都是常函數(shù)腥椒。但是矛盾出現(xiàn)了阿宅,常函數(shù)的作用是不允許用戶去修改,但是這兩個常函數(shù)卻返回了Rectangular的私有成員笼蛛。另外常函數(shù)只是說在常函數(shù)體內(nèi)不進行更改數(shù)據(jù)成員的操作洒放,它返回的東西并不一定是常量。既然如此用戶就很有可能通過這倆接口去改變Rectangular類原本私有成員滨砍,這是極其不符合該程序的初衷和封裝性原則的往湿。
所以作者在這里說“成員變量的封裝性最多等于其返回引用的訪問級別”是很有道理的。作者還說非公有的成員函數(shù)也是內(nèi)部數(shù)據(jù)惋戏,這不是廢話嘛领追,我早就知道啊。作者想表達是啥呢响逢,就是從訪問級別上來講绒窑,不要讓那些訪問級別高的成員函數(shù)返回指向訪問級別低的成員函數(shù)的handles,不過在我看來舔亭,具體來講就是不要讓公有接口返回任何非公有的成員的handles些膨。
那么這原則中所提及的問題是怎么解決的呢?正如我所說的钦铺,常函數(shù)只是在函數(shù)體內(nèi)不能對數(shù)據(jù)成員更改订雾,但是它返回的東西并不一定不能被更改,所以呢矛洞,那么就把返回值也設(shè)成const就OK了洼哎。
盡管如此呢還是有個問題存在,那就是函數(shù)雖然返回了const成員不能被更改缚甩,但是作為右值的語句結(jié)束以后谱净,它的生命期就結(jié)束了,那右值的東西被析構(gòu)掉左值不就成了空吊子擅威。
所以返回只想對象內(nèi)部成分的handles總是危險的壕探,
作者最后總結(jié)道:能不用handles只想對象內(nèi)部就不用,這樣可以增加封裝性郊丛,最好在const函數(shù)的返回類型上也加個const李请,也盡量避免空吊的出現(xiàn)。
原則28:避免返回handles指向?qū)ο蟮膬?nèi)部成分
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巢株,“玉大人槐瑞,你說我怎么就攤上這事「蟀” “怎么了困檩?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長那槽。 經(jīng)常有香客問我悼沿,道長,這世上最難降的妖魔是什么倦炒? 我笑而不...
- 正文 為了忘掉前任显沈,我火速辦了婚禮,結(jié)果婚禮上逢唤,老公的妹妹穿的比我還像新娘拉讯。我一直安慰自己,他們只是感情好鳖藕,可當我...
- 文/花漫 我一把揭開白布魔慷。 她就那樣靜靜地躺著,像睡著了一般著恩。 火紅的嫁衣襯著肌膚如雪院尔。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼例获,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了曹仗?” 一聲冷哼從身側(cè)響起榨汤,我...
- 正文 年R本政府宣布岳颇,位于F島的核電站照捡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏话侧。R本人自食惡果不足惜栗精,卻給世界環(huán)境...
- 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞻鹏。 院中可真熱鬧悲立,春花似錦、人聲如沸新博。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽赫悄。三九已至原献,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埂淮,已是汗流浹背姑隅。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 《Effective C++ 中文版 第三版》讀書筆記 ** 條款 28:避免返回 handle 指向?qū)ο髢?nèi)部成分...
- 1. 讓自己習慣C++ 條款01:視C++為一個語言聯(lián)邦 為了更好的理解C++霹俺,我們將C++分解為四個主要次語言:...
- C++文件 例:從文件income. in中讀入收入直到文件結(jié)束柔吼,并將收入和稅金輸出到文件tax. out。 檢查...
- 我不知道要怎么寫開頭的稱謂,怎么稱呼你,像平時那么親切地叫你培漏,讓我覺得有點奇怪溪厘。總之牌柄,這就是給你寫的信畸悬。也許你最近...