原則28:避免返回handles指向?qū)ο蟮膬?nèi)部成分

在這里首先要明確啥是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)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末厉熟,一起剝皮案震驚了整個濱河市导盅,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揍瑟,老刑警劉巖白翻,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡滤馍,警方通過查閱死者的電腦和手機岛琼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巢株,“玉大人槐瑞,你說我怎么就攤上這事「蟀” “怎么了困檩?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長那槽。 經(jīng)常有香客問我悼沿,道長,這世上最難降的妖魔是什么倦炒? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任显沈,我火速辦了婚禮,結(jié)果婚禮上逢唤,老公的妹妹穿的比我還像新娘拉讯。我一直安慰自己,他們只是感情好鳖藕,可當我...
    茶點故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布魔慷。 她就那樣靜靜地躺著,像睡著了一般著恩。 火紅的嫁衣襯著肌膚如雪院尔。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天喉誊,我揣著相機與錄音邀摆,去河邊找鬼。 笑死伍茄,一個胖子當著我的面吹牛栋盹,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播敷矫,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼例获,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了曹仗?” 一聲冷哼從身側(cè)響起榨汤,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎怎茫,沒想到半個月后收壕,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年啼器,在試婚紗的時候發(fā)現(xiàn)自己被綠了旬渠。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡端壳,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出枪蘑,到底是詐尸還是另有隱情损谦,我是刑警寧澤,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布岳颇,位于F島的核電站照捡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏话侧。R本人自食惡果不足惜栗精,卻給世界環(huán)境...
    茶點故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望瞻鹏。 院中可真熱鬧悲立,春花似錦、人聲如沸新博。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽赫悄。三九已至原献,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間埂淮,已是汗流浹背姑隅。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留倔撞,地道東北人讲仰。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像误窖,于是被迫代替她去往敵國和親叮盘。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容