常數值
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 關鍵字。
C 和 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++ 編譯器。