筆記三:const 在變量、函數、指針中的使用

const限定符在變量、函數、指針中的使用

個人理解: 不管是在變量、函數、指針等中加入const限定符,一般都按照優先級高低+從右向左結合的方式去理解(ps:如理解有誤,望指教~)

  • case 1const int butfsize = 512;
    理解:
    a):沒有優先級,則變量名bufsize首先與int結合,表明是一個int型變量;
    b):聲明爲int型的bufsize變量再與const結合,則表明它是一個常量;
    c):兩者結合起來,bufsize是一個int型常量,初始化爲512;

  • case 2const double *cptr;
    理解:
    a):cptr與*結合,表明它是一個指針;
    b):*cptr與double結合,表明它是一個double型指針;
    c):若沒有const限定符,表明cptr指向double型變量,增加const限定符,則cptr指向範圍縮小,限定在double型的const變量範圍
    d):上述3點表示cptr指針的指向對象是const型,但其本身非const指針;

  • case 3int *const currErr = &errNum;
    理解:
    a)存在*,最終是要與變量名結合在一起,故此時在理解上可將等式類比成int const *currErr = &errNum; (參考 int* p 等價 int *p, 若理解有誤,請指正)
    b):仍然按照從右向左的結合方式,*currErr是一個指針;
    c):const 與*currErr 結合,表明它是一個const型指針;
    d):int限定指針的指向範圍,表明const型指針指向一個int型的變量;
    f):const型指針通俗來講,表明“我看上你了errNum,就絕不會移情別戀再看上其他的變量“;

  • case 4bool (*pf)(const string&)
    理解:
    a):按照優先級順序,先考慮()內的;
    b):對const string& 而言,形參首先是一個引用,然後是一個string類型的引用,最後將引用限定一個範圍,屬於const引用,表示在函數中只能讀而不能對引用變量進行寫操作;
    c):(*pf)表明pf先是一個指針;
    d): 故pf是一個指向函數的指針,且該函數是帶有常string引用和bool返回值。

  • case 5double avg_price() const;
    理解:
    a):根據規則,將const加在成員函數的形參之後,成員函數聲明爲常量,不能改變其操作對象的成員變量的值

  • case 6const int fun();
    理解:
    a):也適用於從右向左結合方式,首先是一個函數,其次返回int型變量,然後const對返回值進行範圍縮小的限定,只能是const型即常量。

  • 注:遇到其他形式再補充~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章