C++ const

一蝠猬、const分類如下:

1. 常變量:  const 類型說明符 變量名
2. 常引用:  const 類型說明符 &引用名
3. 常對象:  類名 const 對象名
4. 常成員函數(shù):  類名::fun(形參) const
5. 常數(shù)組:  類型說明符 const 數(shù)組名[大小]    
6. 常指針:  const 類型說明符* 指針名 ,類型說明符* const 指針名

首先提示的是:在常變量(const 類型說明符 變量名)统捶、常引用(const 類型說明符 &引用名)榆芦、常對象(類名 const 對象名)、 常數(shù)組(類型說明符 const 數(shù)組名[大小])瘾境, const” 與 “類型說明符”或“類名”(其實類名是一種自定義的類型說明符) 的位置可以互換歧杏。如:
     const int a=5; 與 int const a=5; 等同
     類名 const 對象名 與 const 類名 對象名 等同

二、用法如下:

用法1:常量

取代了C中的宏定義迷守,聲明時必須進行初始化(!c++類中則不然)犬绒。const限制了常量的使用方式,并沒有描述常量應該如何分配兑凿。如果編譯器知道了某const的所有使用凯力,它甚至可以不為該const分配空間。最簡單的常見情況就是常量的值在編譯時已知礼华,而且不需要分配存儲咐鹤。―《C++ Program Language》
用const聲明的變量雖然增加了分配空間,但是可以保證類型安全圣絮。
C標準中祈惶,const定義的常量是全局的,C++中視聲明位置而定扮匠。

用法2:指針和常量

使用指針時涉及到兩個對象:該指針本身和被它所指的對象捧请。將一個指針的聲明用const“預先固定”將使那個對象而不是使這個指針成為常量。要將指針本身而不是被指對象聲明為常量棒搜,必須使用聲明運算符*const疹蛉。
所以出現(xiàn)在 * 之前的const是作為基礎(chǔ)類型的一部分:
char *const cp; //到char的const指針
char const *pc1; //到const char的指針
const char pc2; //到const char的指針(后兩個聲明是等同的)
從右向左讀的記憶方式:
cp is a const pointer to char. 故pc不能指向別的字符串,但可以修改其指向的字符串的內(nèi)容
pc2 is a pointer to const char. 故
pc2的內(nèi)容不可以改變力麸,但pc2可以指向別的字符串

且注意:允許把非 const 對象的地址賦給指向 const 對象的指針,不允許把一個 const 對象的地址賦給一個普通的可款、非 const 對象的指針。

用法3:const修飾函數(shù)傳入?yún)?shù)
   將函數(shù)傳入?yún)?shù)聲明為const克蚂,以指明使用這種參數(shù)僅僅是為了效率的原因闺鲸,而不是想讓調(diào)用函數(shù)能夠修改對象的值。同理埃叭,將指針參數(shù)聲明為const翠拣,函數(shù)將不修改由這個參數(shù)所指的對象。
通常修飾指針參數(shù)和引用參數(shù):
 void Fun( const A *in); //修飾指針型傳入?yún)?shù)
  void Fun(const A &in); //修飾引用型傳入?yún)?shù)
用法4:修飾函數(shù)返回值
可以阻止用戶修改返回值游盲。返回值也要相應的付給一個常量或常指針误墓。
用法5:const修飾成員函數(shù)(c++特性)
 const對象只能訪問const成員函數(shù),而非const對象可以訪問任意的成員函數(shù)益缎,包括const成員函數(shù)谜慌;
 const對象的成員是不能修改的,而通過指針維護的對象確實可以修改的莺奔;
 const成員函數(shù)不可以修改對象的數(shù)據(jù)欣范,不管對象是否具有const性質(zhì)。編譯時以是否修改成員數(shù)據(jù)為依據(jù)進行檢查令哟。

最容易讓人迷惑的是const到底是修飾指針還是指針指向的內(nèi)存區(qū)域恼琼?其實,只要知道:const只對它左邊的東西起作用屏富,唯一的例外就是const本身就是最左邊的修飾符晴竞,那么它才會對右邊的東西起作用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狠半,一起剝皮案震驚了整個濱河市噩死,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌神年,老刑警劉巖已维,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異已日,居然都是意外死亡垛耳,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進店門飘千,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堂鲜,“玉大人,你說我怎么就攤上這事占婉∨葑欤” “怎么了?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵逆济,是天一觀的道長酌予。 經(jīng)常有香客問我,道長奖慌,這世上最難降的妖魔是什么抛虫? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮简僧,結(jié)果婚禮上建椰,老公的妹妹穿的比我還像新娘。我一直安慰自己岛马,他們只是感情好棉姐,可當我...
    茶點故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布屠列。 她就那樣靜靜地躺著,像睡著了一般伞矩。 火紅的嫁衣襯著肌膚如雪笛洛。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天乃坤,我揣著相機與錄音苛让,去河邊找鬼。 笑死湿诊,一個胖子當著我的面吹牛狱杰,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播厅须,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼仿畸,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了九杂?” 一聲冷哼從身側(cè)響起颁湖,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎例隆,沒想到半個月后甥捺,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡镀层,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年镰禾,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片唱逢。...
    茶點故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡吴侦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出坞古,到底是詐尸還是另有隱情备韧,我是刑警寧澤,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布痪枫,位于F島的核電站织堂,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奶陈。R本人自食惡果不足惜易阳,卻給世界環(huán)境...
    茶點故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吃粒。 院中可真熱鬧潦俺,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至很魂,卻和暖如春扎酷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背遏匆。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留谁榜,地道東北人幅聘。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像窃植,于是被迫代替她去往敵國和親帝蒿。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,514評論 2 348

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

  • C++中的const關(guān)鍵字的用法非常靈活巷怜,而使用const將大大改善程序的健壯性葛超,本人根據(jù)各方面查到的資料進行總結(jié)...
    Charliehhh閱讀 942評論 0 1
  • 原文地址: 不詳 C++中的const關(guān)鍵字的用法非常靈活,而使用const將大大改善程序的健壯性延塑,本人根據(jù)各方面...
    Caiaolun閱讀 269評論 0 0
  • 一绣张、概述 用const限定來限定值不能被改變的變量。一個變量被const限定后关带,值不能被改變侥涵,只能在con...
    王一百閱讀 628評論 2 3
  • 關(guān)鍵字const多才多藝,你可以用它在class外部修飾global或namespace作用域中的常量宋雏,或修飾文件...
    何幻閱讀 258評論 0 0
  • 作用: 1.修飾變量芜飘,說明變量內(nèi)容不可以被改變; 2.修飾指針磨总,分為指向常量的指針嗦明,指針常量; 3.常量引用蚪燕,經(jīng)常...
    lxr_閱讀 236評論 0 0