常數值

Const 關鍵字指定變數的值是常數,並告知編譯器,防止程式設計師對其進行修改。

// constant_values1.cpp
int main() {
   const int i = 5;
   i = 10;   // C3892
   i++;   // C2105
}

在 C++ 中,您可以使用 const 關鍵字,而不是 # define 前置處理器指示詞,以定義常數的值。值以定義 const 受限於型別檢查,且適用於常數運算式的位置。在 C++ 中,您可以指定的陣列大小 const 變數,如下所示:

// constant_values2.cpp
// compile with: /c
const int maxarray = 255;
char store_char[maxarray];  // allowed in C++; not allowed in C

在 c 中,常數的值預設為外部連結,因此它們可以出現在原始程式檔。在 C++,常數的值預設為內部的連結,讓它們出現在標頭檔中。

Const 關鍵字也可用在指標宣告。

// constant_values3.cpp
int main() {
   char *mybuf = 0, *yourbuf;
   char *const aptr = mybuf;
   *aptr = 'a';   // OK
   aptr = yourbuf;   // C3892
}

變數的指標做為宣告的變數, const 可指派給宣告為指標 const

// constant_values4.cpp
#include <stdio.h>
int main() {
   const char *mybuf = "test";
   char *yourbuf = "test2";
   printf_s("%s\n", mybuf);

   const char *bptr = mybuf;   // Pointer to constant data
   printf_s("%s\n", bptr);
   
   // *bptr = 'a';   // Error
}

Output

test
test

您可以使用常數的資料指標做為函式參數,以防止修改透過指標傳遞參數的函式。

宣告為物件的 const,您僅可以呼叫 常數成員函式。如此可確保永遠不會修改 [此常數的物件。

birthday.getMonth();    // Okay
birthday.setMonth( 4 ); // Error

您可以呼叫常數或非常數的成員函式非常數的物件。您可以也多載成員函式使用 const 關鍵字。 這可讓不同的版本為常數且非常數的物件呼叫的函式。

您不能宣告建構函式或解構函式與 const 關鍵字。

357syhfh.collapse_all(zh-tw,VS.110).gifC 和 C++ const 差異

當您將變數宣告為 const c 原始程式碼檔,在您這麼做:

const int i = 2;

您接著可以使用這個變數另一個模組中,如下所示:

extern const int i;

若要取得相同的行為,在 C++ 中,您必須宣告,但您 const 變數為:

extern const int i = 2;

如果您想要宣告extern C++ 原始程式碼檔案中使用 c 原始程式檔中,使用變數:

extern "C" const int x=10;

若要避免名稱改變 C++ 編譯器。

請參閱

參考

const (C++)

常數成員函式