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

C++ const 完全指南:從變量到成員函數的全方位解析

     編輯:關於C語言

跨文件 const 變量鏈接規則

C++ 中 const 全局變量默認 內部鏈接(相當於 static),跨文件訪問必須显式加 extern:

// a.cpp
extern const int BUF_SIZE = 512;  // 定義+導出

// b.cpp
extern const int BUF_SIZE;        // 聲明引用

指針與 const 的「垂線法則」

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

位置含義重載區分
返回值 const int*返回指針指向的內容不可修改不參與重載
參數 const int&參數為常量引用參與重載
成員函數尾部 void foo() const不修改對象狀態參與重載
參數 int *const參數為常量指針(指針本身不可變)不參與重載(傳值拷貝)

const 成員函數核心規則

  • 只能調用其他 const 成員函數
  • 不能修改非 mutable 成員變量
  • 可通過 const_cast 解除(僅當對象本身非 const 時安全)

常見誤區辨析

  1. const int GetInt() 無意義——返回值本就是右值臨時量
  2. f(int*) 與 f(int* const) 不能構成重載——指針按值傳遞
  3. char* 與 const char* 轉換需顯式轉型,防止誤寫字符串常量
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved