最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
關(guān)于c++中的const的總結(jié)

1.為什么要用const

const本質(zhì)上其實(shí)不僅僅是對變量的一個限定符,更是對程序員的一個限定符,它提醒了程序員,通過const限定的變量的值是不應(yīng)該被更改的,并且當(dāng)編譯器得知變量或者表達(dá)式的求值結(jié)果是恒定的時候,編譯器也可以在編譯期大展拳腳,為我們做出一些編譯期優(yōu)化,進(jìn)而提高我們的程序在運(yùn)行時的性能(例如編譯器會在編譯時直接將字面值常量插入我們的代碼段)。

新民網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站設(shè)計(jì)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)成立于2013年到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)

2.const的基本用法

  • 用來進(jìn)行基本類型變量的聲明
    /*const變量在初始化的時候必須賦予值*/
    int z;//正確: 常規(guī)變量初始化可不給明確值
    const int x = 5; //正確: 以字面值常量5來進(jìn)行初始化
    //const int y;  錯誤:const變量的聲明必須進(jìn)行初始化
    const int y = z; //正確:const型的變量可以被非const型變量進(jìn)行初始化
    
    /*const變量不允許被修改*/
    //x = 3; y = 3 錯誤:不允許對const型變量進(jìn)行修改
    
  • 用來對指針或者引用這種復(fù)合類型進(jìn)行聲明
    /*關(guān)于常量指針與指針常量*/
    int value = 5;
    const int c_value = 5;
    const int* p = &value; //正確:pointer to const 可以被常規(guī)變量地址初始化
    const int* p1 = &c_value; //正確:pointer to const 可以被const變量地址初始化
    //*p = 3, *p1 = 3 錯誤:無法通過pointer to const來改變所指向變量的值
    
    int* const p2 = &value; //正確: 聲明一個const pointer
    *p2 = 3; //正確: 可以通過const pointer來更改它所指向的值
    //p2 = &c_value; 錯誤: const pointer所指向的地址無法被修改
    
    /*引用類型與指針類型類似*/
    const int& cref = value; //正確: 可通過常規(guī)變量初始化
    const int& cref_1 = c_value;//正確: 可以通過const變量初始化
    //cref = 4 錯誤: 不可通過reference to const改變原變量的值
    
    其實(shí)在c++primer中,對于const修飾指針的這種情況有一個非常好的說明:

    指針本身是一個對象,它又可以指向另一個對象。因此,指針本身是不是常量以及指針?biāo)傅氖遣皇且粋€常量就是兩個相互獨(dú)立的問題。用名詞頂層const表示指針本身是一個常量,而用名詞底層const表示指針?biāo)傅膶ο笫且粋€常量。

  • 用于面向?qū)ο蟪绦蛳嚓P(guān)設(shè)計(jì)時
    class base {
        private:
            int m_data;
            mutable int m_data_1;
        public:
            void print() const {cout << "Const version!\n";} //聲明一個const型的函數(shù)
            void print() {cout << "Non const version\n";} //同名非const型函數(shù),可以與上面函數(shù)構(gòu)成重載
            // void set(int x) const {m_data = x;} 錯誤:不能在const成員函數(shù)中改變m_data的值 
            void set(int x) const {m_data_1 = x;} //正確:可以對mutable變量進(jìn)行修改
    }
    //并且當(dāng)實(shí)例化一個const base對象時,其只能調(diào)用其常成員函數(shù)。
    

3.總結(jié)

在初始化時,const型變量往往沒有特別嚴(yán)格的要求,無論用const變量,字面值常量還是常規(guī)變量來進(jìn)行初始化都是合法的操作,但是一旦初始化完成后,const變量便開始拒絕修改操作,并且我們可以將這個性質(zhì)推廣到類的成員函數(shù)之上,類的常成員函數(shù)不可以對內(nèi)部成員變量進(jìn)行修改(大部分情況下),而至于通過類實(shí)例化的常對象也只能調(diào)用我們的常成員函數(shù)??偟膩碚f,const可以讓我們的程序更加安全,通過這種編譯時的檢查,我們可以確保一些我們不想變更的值保持其原本的樣子。


新聞名稱:關(guān)于c++中的const的總結(jié)
地址分享:http://fisionsoft.com.cn/article/dsoihos.html