C++數(shù)據(jù)類型(四)const常量

const常量

const常量:值無法被改變的變量

關(guān)于const的一些規(guī)則

//創(chuàng)建之后必須初始化
    const int bufSize = 1024;
    const int a = get_a();
    const int b;    //錯(cuò)誤挑胸,沒有初始化
    bufSize = 1024; //錯(cuò)誤猴凹,常量不能賦值

const的引用

  • 與可變變量的引用不同的是夷狰,對(duì)常量的引用,不能用作修改其所綁定的常量郊霎。
  • 初始化常量的引用時(shí)允許用表達(dá)式作為初始值沼头,但左右兩邊類型相同,但變量不行
const int bufSize = 1024;
const int &a = 512; //錯(cuò)誤书劝,不能修改綁定的常量的值
const int &b = bufSize * 3; //正確
int &c = bufSize * 3;     //錯(cuò)誤进倍,非常量引用必須為左值

至于最后一條語句:使用表達(dá)式對(duì)變量引用報(bào)錯(cuò),解釋如下:
試想如下語句:

double d = 3.14;
const int &rd = d;

對(duì)于這種引用购对,編譯器工作如下:

double d = 3.14;
int temp = d;
const int &rd = temp;

rd只是綁定了一個(gè)臨時(shí)變量temp背捌,如果rd不是常量是變量呢?那么就允許對(duì)rd賦值洞斯,但是對(duì)rd賦值改變的是臨時(shí)變量的值,之所以有變量引用坑赡,無非就是想通過引用改變綁定變量的值烙如,如著名交換函數(shù)swap(),但是對(duì)于出現(xiàn)中間臨時(shí)變量的這種情況毅否,無法達(dá)到上述要求亚铁,那么引用也無任何意義,所以螟加,編譯器對(duì)于變量引用使用表達(dá)式初始化報(bào)錯(cuò)徘溢。

指針和const
與常量的引用類似,也存在指向常量的指針捆探,同樣也不能通過指針改變常量的值然爆。

const int a = 4;
int *b = &a;
  • const指針
    與引用不同,指針是作為對(duì)象出現(xiàn)的黍图,允許把指針作為常量曾雕,即常量指針。同樣助被,常量指針必須初始化剖张,一旦初始化成功,不能修改揩环,指針常量的定義如下:
#include<iostream>
using namespace std;
int main() {
    int bufSize = 1024;
    int bufSize2 = 512;
    //定義一個(gè)常量指針
    int *const rbuf = &bufSize;
    //rbuf = &bufSize2; //錯(cuò)誤:表達(dá)式必須是可修改的左值
    cout << *rbuf << endl;
    bufSize = 2048;
    cout << *rbuf << endl;
    system("pause");
    return 0;
}
//輸出結(jié)果
1024
2048

關(guān)于常量的引用或者指向常量的指針搔弄,一直搞不明白有什么用,既然不能那個(gè)改變丰滑,為什么還可以引用或者使用指針呢顾犹?

constexpr和常量表達(dá)式

常量表達(dá)式指不會(huì)改變而且在編譯過程中就能計(jì)算出結(jié)果的表達(dá)式
字面值屬于常量表達(dá)式,用常量表達(dá)式初始化的常量也是常量表達(dá)式。

const int num = 20;             //num是常量表達(dá)式
const int number = num + 1;     //number也是常量表達(dá)式
int a = 3;                      //a不是常量表達(dá)式
const int size = size();        //size不是常量表達(dá)式

C++11新標(biāo)準(zhǔn):
允許將變量聲明為constexpr類型蹦渣,編譯器驗(yàn)證變量是否是一個(gè)常量表達(dá)式

constexpr int num = 20;             //num是常量表達(dá)式
constexpr int number = num + 1;     //number也是常量表達(dá)式
constxpr int size = size();         //size不一定常量表達(dá)式哄芜,size()是constexpr函數(shù)時(shí),語句正確

同樣的柬唯,constexpr對(duì)于指針同樣有效认臊,相當(dāng)于聲明了一個(gè)常量指針

const int *p = nullptr;            //p是指向整型常量的指針
constexpr int *q = nullptr;       //q是常量指針
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市锄奢,隨后出現(xiàn)的幾起案子失晴,更是在濱河造成了極大的恐慌,老刑警劉巖拘央,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涂屁,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡灰伟,警方通過查閱死者的電腦和手機(jī)拆又,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來栏账,“玉大人帖族,你說我怎么就攤上這事〉簿簦” “怎么了竖般?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)茶鹃。 經(jīng)常有香客問我涣雕,道長(zhǎng),這世上最難降的妖魔是什么闭翩? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任挣郭,我火速辦了婚禮,結(jié)果婚禮上疗韵,老公的妹妹穿的比我還像新娘丈屹。我一直安慰自己,他們只是感情好伶棒,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布旺垒。 她就那樣靜靜地躺著,像睡著了一般肤无。 火紅的嫁衣襯著肌膚如雪先蒋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天宛渐,我揣著相機(jī)與錄音竞漾,去河邊找鬼眯搭。 笑死,一個(gè)胖子當(dāng)著我的面吹牛业岁,可吹牛的內(nèi)容都是我干的鳞仙。 我是一名探鬼主播,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼笔时,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼棍好!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起允耿,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤借笙,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后较锡,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體业稼,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年蚂蕴,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了低散。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡骡楼,死狀恐怖谦纱,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情君编,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布川慌,位于F島的核電站吃嘿,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏梦重。R本人自食惡果不足惜兑燥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望琴拧。 院中可真熱鬧降瞳,春花似錦、人聲如沸蚓胸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽沛膳。三九已至扔枫,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锹安,已是汗流浹背短荐。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國(guó)打工倚舀, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人忍宋。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓痕貌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親糠排。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舵稠,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

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