c++-const

const

  • const
    • 基礎知識(指針變量和它所指向的內存空間變量是兩個不一樣的概念)
    • c中冒牌貨(只讀變量有本身存儲空間)
    • C++const是一個只讀常量,符號表機制,(不)可能分配內存
    • const常量是由編譯器處理的,提供類型檢查和做用域檢查
    • define宏定義由預處理器處理,單純的文本替換

    • const修飾類成員變量(構造函數初始化列表)
    • const修飾類成員函數:修飾的是this指針
  • 基礎知識(指針變量和它所指向的內存空間變量是兩個不一樣的概念)

const int a;ios

int const b;函數

//第⼀個第⼆個意思⼀樣表明⼀個常整形數
const int *c;this

//第三個 c是⼀個指向常整形數的指針(所指向的內存數據不能被修改,可是本⾝能夠修
改)spa

int * const d;指針

//第四個 d 常指針(指針變量不能被修改,可是它所指向內存空間能夠被修改)code

const int * const e ;內存

//第五個 e⼀個指向常整形的常指針(指針和它所指向的內存空間,均不能被修改)作用域

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>

using namespace std;


//const 修飾引用,通常跟const修飾指針的用途是同樣的。都是做爲函數參數,
//保證該參數是輸入參數,是隻讀的,在函數內部該表不了外部的值
void printB(const int &re)
{
    cout << "re = " << re << endl;
}

int main(void)
{
    const int a = 10; //1,若是想對一個常量進行引用, 必須是一個const引用。

    const int &re = a;

    int b = 20;
    const int &re2 = b; //2 相反若是一個普通變量,用一個const引用接收是能夠的。

    cout << "b = " << b << endl;
    cout << "re2 =" << re2 << endl;
    //re2 = 300;
    b = 30;
    cout << "b = " << b << endl;
    cout << "re2 =" << re2 << endl; 

    printB(b);
    printB(a);


    const int &re3 = 10;

    //const int &re3 = 10; re3 = &10, 編譯器臨時開闢一個變量temp = 10;
    //const int &re3 = temp

    const int *p = &re3;

    *((int*)p) = 30; //temp = 30

    cout << "*p = " << *p << endl;
    cout << "re3 = " << re3 << endl;


    return 0;
}
相關文章
相關標籤/搜索