C++ 中 const 全局變量默認 內部鏈接(相當於 static),跨文件訪問必須显式加 extern:
// a.cpp
extern const int BUF_SIZE = 512; // 定義+導出
// b.cpp
extern const int BUF_SIZE; // 聲明引用
const int *p1; // ← const 修飾 *p1(指向的值不可變)
int *const p2; // ← const 修飾 p2(指針本身不可變)
const int *const p3; // 都不可變
/* 參數傳遞最佳實踐 */
void func(const BigObj &obj); // 大對象:const 引用避免拷貝
void func(int val); // 內建類型:值傳遞即可,const 引用反而慢
| 位置 | 含義 | 重載區分 |
|---|---|---|
返回值 const int* | 返回指針指向的內容不可修改 | 不參與重載 |
參數 const int& | 參數為常量引用 | 參與重載 |
成員函數尾部 void foo() const | 不修改對象狀態 | 參與重載 |
參數 int *const | 參數為常量指針(指針本身不可變) | 不參與重載(傳值拷貝) |
mutable 成員變量const_cast 解除(僅當對象本身非 const 時安全)const int GetInt() 無意義——返回值本就是右值臨時量f(int*) 與 f(int* const) 不能構成重載——指針按值傳遞char* 與 const char* 轉換需顯式轉型,防止誤寫字符串常量