C++中const的使用

1. const的基本使用

用法1

const int Constant1=96;

這個無需贅述。

用法2

const int * Constant2 等價于 int const * Constant2

是說這個 Constant2 這個指針指向的數是常量,不能變。

用法3

int * const Constant3

是說這個 Constant3 這個指針自己是常量,不能再指向其他變量了。

2. const 在函數返回值中的使用

char *Function1()
{ 
    return "Some text";
}
Function1()[1] = 'a';

這么做會導致程序運行崩潰,然后我們就得費力地去追蹤錯誤。
而如果我們像下面這樣寫的話:

const char *Function1()
{
    return "Some text";
}
Function1()[1] = 'a';

在編譯階段就會報錯,告訴我們我們在嘗試改一個常量,省去了我們追蹤錯誤的煩惱。

3. const 在傳參時的使用

void Subroutine(int Parameter1)
{
    printf("%d", Parameter1);
}

在 C/C++ 中傳參默認是是傳一個拷貝值,這也是為什么函數里面對參數進行改變卻不能影響外面。
而引用是直接將函數外面的值傳進來,因此就可以修改了。
所以通常來說使用“引用”是為了改變函數外的值。
而有時候我們不想修改外面的值為什么還要用引用呢?
這是因為有的變量對象實在太大,拷貝太浪費內存,因此我們想直接訪問而不是拷貝。
但是這時候這些變量是不能改變的,所以為了防止我們一不小心忘了這茬,我們加上一個 const。
這樣,我們既能直接訪問變量,又能確保不會改變他們。
就像這樣:

void Subroutine(big_structure_type const &Parameter1);

4. const在類里面的使用

對象的 method 訪問 member variables 時都是直接訪問,因此可以改變這些成員變量的值。
有些 method 我們明確希望他們沒有改變成員變量的能力,這時候就需要const。

class Class1
{
    void Method1() const;
    int MemberVariable1;
}

5. 總結

舉個栗子~:

const int* const Method3(const int* const&)const;

從左往右:
第一個 const 是說 返回的指針指向的 int 值不能變
第二個 const 是說 返回的指針自己不能變
第三個 const 是說 參數里 int* 指針指向的值不能改變,這就要求實參自身必須是 const int*
第四個 const 是說 參數里 int* 指針自身不能變 (配合 & 使用)
第五個 const 是說 這個method 不能改變對象里面的成員變量

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 1.ios高性能編程 (1).內層 最小的內層平均值和峰值(2).耗電量 高效的算法和數據結構(3).初始化時...
    歐辰_OSR閱讀 29,566評論 8 265
  • 1.語言中變量的實質 要理解C指針,我認為一定要理解C中“變量”的存儲實質, 所以我就從“變量”這個東西開始講起吧...
    金巴多閱讀 1,805評論 0 9
  • Anna艷娜 我是一個急性子的人,一旦想要做某件事或做了某個選擇我會立馬就去做,希望它盡快落地~我是一個有主見的人...
    Anna艷娜閱讀 145評論 0 0
  • 訪得梅花花已成,匆匆已是舊桃更。 尊前守歲天涯客,燈下思鄉游子情。 鎖斷窗前三尺雪,坐觀身畔兩色枰。 縈懷何必總成...
    田園讀書人閱讀 713評論 0 5
  • 晚,天冷了,單位東西太多拿不回去已經很多天了,今天很幸運他來取,到了說門口沒有停車地,只能停馬路邊。結果,畫面是:...
    石頭將軍閱讀 193評論 0 0