原則3:盡可能使用const

《Effective C++》里面第3條原則是盡量使用const休蟹。
其原因是防止無意中更改而本來不應(yīng)該更改的變量幕侠。
本條款也提到const成員函數(shù)的重要性油挥,原因之一就是只有const函數(shù)才能用來操縱const對象顾患。
而所謂const對象就像下圖所示的這樣:



有的時候會遇到在const函數(shù)中更改非const成員變量的情況,這個時候就要用到mutable關(guān)鍵字了用踩。如果一個成員變量被mutable修飾渠退,那么它在const函數(shù)中仍然可以被修改,但是前提是該成員變量是非const成員脐彩。
還有一種情況就是為了防止代碼重復(fù)智什,比如兩個函數(shù)實現(xiàn)了同樣的功能只是類型不同而已,這樣就會導(dǎo)致兩段幾乎相同的代碼段丁屎,這無疑會增加編譯時間、維護和代碼膨脹等風險旱眯。在本原則的有關(guān)敘述中晨川,作者采用了強制類型轉(zhuǎn)換來解決之,雖然作者本身在大多數(shù)情況下并不提倡做法删豺。
為了給用戶一個一目了然的接口共虑,一看就知道那些成員函數(shù)可以操縱const對象而哪些不能,作者建議在類中明確將那些不改變對象的成員函數(shù)聲明為const函數(shù)呀页,雖然const成員函數(shù)可以使用非const成員變量妈拌,但是遵守這一原則會給客戶帶來極大的便利。
因為const成員函數(shù)不更改對象蓬蝶,這就防止了由于誤操作而帶來的問題尘分,因為最好用非const成員函數(shù)去調(diào)用const的實現(xiàn),說白了就是直接return這個const成員函數(shù)丸氛,只不過需要對作為這個return的表達式的const成員函數(shù)進行一下強制類型轉(zhuǎn)換使其成為非const型的培愁。所以,在這里不得不提一下純粹的C++的強制類型轉(zhuǎn)換缓窜。
關(guān)鍵在static_cast<typename>(value)是純粹的C++強制類型轉(zhuǎn)換的關(guān)鍵詞和用法定续,它的使用頻率是最高的谍咆。



const_cast<typename>(value)是用來消除const屬性時用的。不過它不能用于基本類型私股。
reinterpret_cast<typename>(value)它用于無關(guān)類型之間的轉(zhuǎn)換摹察。
dynamic_cast<typename>(value)用于父子類指針之間的轉(zhuǎn)換。
在C++語言中只有這4中強制類型轉(zhuǎn)換倡鲸。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末供嚎,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子旦签,更是在濱河造成了極大的恐慌查坪,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件宁炫,死亡現(xiàn)場離奇詭異偿曙,居然都是意外死亡,警方通過查閱死者的電腦和手機羔巢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進店門望忆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人竿秆,你說我怎么就攤上這事启摄。” “怎么了幽钢?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵歉备,是天一觀的道長。 經(jīng)常有香客問我匪燕,道長蕾羊,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任帽驯,我火速辦了婚禮龟再,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘尼变。我一直安慰自己利凑,他們只是感情好,可當我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布嫌术。 她就那樣靜靜地躺著哀澈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛉威。 梳的紋絲不亂的頭發(fā)上日丹,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音蚯嫌,去河邊找鬼哲虾。 笑死丙躏,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的束凑。 我是一名探鬼主播晒旅,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼汪诉!你這毒婦竟也來了废恋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤扒寄,失蹤者是張志新(化名)和其女友劉穎鱼鼓,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體该编,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡迄本,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了课竣。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嘉赎。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖于樟,靈堂內(nèi)的尸體忽然破棺而出公条,到底是詐尸還是另有隱情,我是刑警寧澤迂曲,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布靶橱,位于F島的核電站,受9級特大地震影響路捧,放射性物質(zhì)發(fā)生泄漏抓韩。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一鬓长、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧尝江,春花似錦涉波、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至惭聂,卻和暖如春窗声,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背辜纲。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工笨觅, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留拦耐,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓见剩,卻偏偏與公主長得像杀糯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子苍苞,可洞房花燭夜當晚...
    茶點故事閱讀 45,440評論 2 359

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

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,521評論 1 51
  • 再讀高效c++固翰,頗有收獲,現(xiàn)將高效c++中的經(jīng)典分享如下羹呵,希望對你有所幫助骂际。 1、盡量以const \enum\i...
    橙小汁閱讀 1,225評論 0 1
  • 1. 讓自己習慣C++ 條款01:視C++為一個語言聯(lián)邦 為了更好的理解C++冈欢,我們將C++分解為四個主要次語言:...
    Mr希靈閱讀 2,815評論 0 13
  • C++運算符重載-下篇 本章內(nèi)容:1. 運算符重載的概述2. 重載算術(shù)運算符3. 重載按位運算符和二元邏輯運算符4...
    Haley_2013閱讀 1,445評論 0 49
  • 第一章 計算機與C++編程簡介 C++程序6個階段編程 ->預(yù)處理->編譯->連接->裝入->執(zhí)行1.程序在編譯器...
    rogertan30閱讀 3,863評論 0 1