首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> C++ >> C++ 入門

C++ 中 const 關鍵字完整用法詳解

     編輯:C++ 入門

C++ 中 const 關鍵字完整用法詳解

const 用於聲明「只讀」語義,增強代碼健壯性,幫助編譯器優化。以下是五大核心使用場景:

1. 修飾常量

const int a = 10;   // 推薦風格:const 在類型前
int const b = 20;   // 等價,但較少用

兩者效果完全一致,編譯器均視為常量,需初始化且不可修改。

2. 修飾指針(重點)

聲明含義口訣
const int* p / int const* p指向常量的指針:指向的值不可修改,指針可指向別處const 在 * 左 → *左邊內容不可變
int* const p常量指針:指針本身不可修改(不可指向別處),指向的值可修改const 在 * 右 → *右邊指針不可變
const int* const p指向常量的常量指針:指針與指向的值雙重不可變兩側都有 const → 雙重保護

3. 修飾函數參數

void func(const Type& param) { ... } // 參數在函數內不可修改
void func(const Type* ptr) { ... }   // 指向的內容不可修改

常用於引用/指針參數,防止誤修改實參,也允許傳入臨時對象或 const 對象。

4. 修飾函數返回值

const int foo() { return 42; }       // 返回 const 值(內置類型通常忽略)
const MyClass& bar() { ... }          // 返回 const 引用,防止修改內部狀態

返回 const 內置類型無實際意義(臨時對象本身不可修改);返回 const 引用/指針可保護對象不被調用者修改。

5. 修飾成員函數(常成員函數)

class A {
    int val;
public:
    int getVal() const { return val; } // 承諾不修改任何成員變量
    // void setVal(int v) const { val = v; } // 編譯錯誤:const 函數不能修改成員
};

const 放在參數列表後,表示該函數不修改對象狀態(mutable 成員除外)。const 對象只能調用 const 成員函數。

總結建議

  • 「盡可能使用 const」:變量、參數、返回值、成員函數,只要邏輯允許都加上。
  • 指針聲明讀法:從右向左讀(如 int const* const p → "p is a const pointer to a const int")。
  • const 正確性能讓編譯器捕獲大量邏輯錯誤,是 C++ 核心最佳實踐之一。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved